diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index fcd780b..f3dd1dc 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -15,13 +15,13 @@ ] }, "fake-cli": { - "version": "5.20.0", + "version": "5.20.4-alpha.1642", "commands": [ "fake" ] }, "paket": { - "version": "5.245.1", + "version": "6.0.0-beta8", "commands": [ "paket" ] @@ -33,10 +33,10 @@ ] }, "fsharp-analyzers": { - "version": "0.4.0", + "version": "0.7.0", "commands": [ "fsharp-analyzers" ] } } -} \ No newline at end of file +} diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index d3ba943..e882426 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM fsharp:netcore +FROM mcr.microsoft.com/dotnet/sdk:5.0 # Copy endpoint specific user settings into container to specify # .NET Core should be used as the runtime. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1711c7e..7736bcc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,23 +4,30 @@ on: [push, pull_request] jobs: build: - strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] - dotnet: [3.1.100] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v1 - - name: Setup .NET Core + - uses: actions/checkout@v2 + - name: Use .NET Core 2.1 SDK + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '2.1.x' + - name: Use .NET Core 3.1 SDK + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '3.1.x' + - name: Use .NET Core 5.0 SDK uses: actions/setup-dotnet@v1 with: - dotnet-version: ${{ matrix.dotnet }} + dotnet-version: '5.0.x' + - name: Build if: runner.os != 'Windows' run: | - chmod +x ./build.sh + chmod +x ./build.sh ./build.sh env: # Work around https://github.com/actions/setup-dotnet/issues/29 diff --git a/.gitignore b/.gitignore index 90d0666..ec9e40e 100644 --- a/.gitignore +++ b/.gitignore @@ -260,6 +260,7 @@ dist/ .ionide/ # Test coverage files +coverage/ coverage.xml coverage.*.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index c1d618d..ef19dad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [3.1.5-alpha1] - +## [Unreleased] ### Added - F# migrations - F# scaffolding diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md index 090626a..5926c1a 100644 --- a/GETTING_STARTED.md +++ b/GETTING_STARTED.md @@ -17,7 +17,7 @@ This package will be published to NuGet at some point. In the meantime, it must 1. Clone this repository 1. From the command line, run `./build.sh` (Linux/Mac) or `.\build.cmd` (Windows) -1. The built NuGet package will be located in the `dist` folder in the root of the repository, named something like `EntityFrameworkCore.FSharp.3.1.5-alpha1.nupkg` +1. The built NuGet package will be located in the `dist` folder in the root of the repository, named something like `EntityFrameworkCore.FSharp.5.0.3-alpha1.nupkg` ## Create a new dotnet project and install dotnet tools @@ -52,7 +52,7 @@ We will use `Paket` for package management, though you can apply the same princi ``` md packages-local - cp {LocationOfLocalRepo}/dist/EntityFrameworkCore.FSharp.3.1.5-alpha1.nupkg ./packages-local + cp {LocationOfLocalRepo}/dist/EntityFrameworkCore.FSharp.5.0.3-alpha1.nupkg ./packages-local ``` 1. In our `paket.dependencies` file, reference this and the NuGet package for our desired Entity Framework provider diff --git a/README.md b/README.md index f8ab236..3cbf9fd 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,18 @@ EFCore.FSharp | [![NuGet Badge](https://buildstats.info/nuget/EFCore.FSharp)](ht --- +## Usage + +Install the package from NuGet and follow our [Getting Started](./GETTING_STARTED.md) guide or our full documentation at [https://efcore.github.io/EFCore.FSharp](https://efcore.github.io/EFCore.FSharp) + +Currently created migrations must be manually added to your solution in the correct order. Although migrations are created with sequential file names so a glob can also be used + +```xml + +``` + +--- + ### Building ```sh @@ -28,13 +40,12 @@ $ ./build.sh // on unix After building the solution, it will create a NuGet package in the `dist` folder. This can then be referenced as usual. -Currently created migrations must be manually added to your solution in the correct order. ### Developing Make sure the following **requirements** are installed on your system: -- [dotnet SDK](https://www.microsoft.com/net/download/core) 3.0 or higher +- [dotnet SDK](https://www.microsoft.com/net/download/core) 5.0 or higher or @@ -74,71 +85,4 @@ or - `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. -- `ReleaseDocs` - Will stage, commit, and push docs generated in the `BuildDocs` target. -- [`Release`](#Releasing) - Task that runs all release type tasks such as `PublishToNuGet`, `GitRelease`, `ReleaseDocs`, and `GitHubRelease`. Make sure to read [Releasing](#Releasing) to setup your environment correctly for releases. ---- - - -### Releasing - -- [Create your NuGeT API key](https://docs.microsoft.com/en-us/nuget/nuget-org/publish-a-package#create-api-keys) - - [Add your NuGet API key to paket](https://fsprojects.github.io/Paket/paket-config.html#Adding-a-NuGet-API-key) - - ```sh - paket config add-token "https://www.nuget.org" 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a - ``` - - - or set the environment variable `NUGET_TOKEN` to your key - - -- [Create a GitHub OAuth Token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) - - You can then set the environment variable `GITHUB_TOKEN` to upload release notes and artifacts to github - - Otherwise it will fallback to username/password - -- Then update the `CHANGELOG.md` with an "Unreleased" section containing release notes for this version, in [KeepAChangelog](https://keepachangelog.com/en/1.1.0/) format. - -NOTE: Its highly recommend to add a link to the Pull Request next to the release note that it affects. The reason for this is when the `RELEASE` target is run, it will add these new notes into the body of git commit. GitHub will notice the links and will update the Pull Request with what commit referenced it saying ["added a commit that referenced this pull request"](https://github.com/TheAngryByrd/MiniScaffold/pull/179#ref-commit-837ad59). Since the build script automates the commit message, it will say "Bump Version to x.y.z". The benefit of this is when users goto a Pull Request, it will be clear when and which version those code changes released. Also when reading the `CHANGELOG`, if someone is curious about how or why those changes were made, they can easily discover the work and discussions. - -Here's an example of adding an "Unreleased" section to a `CHANGELOG.md` with a `0.1.0` section already released. - -```markdown -## [Unreleased] - -### Added -- Does cool stuff! - -### Fixed -- Fixes that silly oversight - -## [0.1.0] - 2017-03-17 -First release - -### Added -- This release already has lots of features - -[Unreleased]: https://github.com/user/MyCoolNewLib.git/compare/v0.1.0...HEAD -[0.1.0]: https://github.com/user/MyCoolNewLib.git/releases/tag/v0.1.0 -``` - -- You can then use the `Release` target, specifying the version number either in the `RELEASE_VERSION` environment - variable, or else as a parameter after the target name. This will: - - update `CHANGELOG.md`, moving changes from the `Unreleased` section into a new `0.2.0` section - - if there were any prerelease versions of 0.2.0 in the changelog, it will also collect their changes into the final 0.2.0 entry - - make a commit bumping the version: `Bump version to 0.2.0` and adds the new changelog section to the commit's body - - publish the package to NuGet - - push a git tag - - create a GitHub release for that git tag - -macOS/Linux Parameter: - -```sh -./build.sh Release 0.2.0 -``` - -macOS/Linux Environment Variable: - -```sh -RELEASE_VERSION=0.2.0 ./build.sh Release -``` - diff --git a/build.cmd b/build.cmd index 6f9b3cf..8a0f008 100644 --- a/build.cmd +++ b/build.cmd @@ -1,6 +1,4 @@ echo Restoring dotnet tools... dotnet tool restore -dotnet paket install - dotnet fake build -t %* diff --git a/build.fsx b/build.fsx index e1cb470..01a43db 100644 --- a/build.fsx +++ b/build.fsx @@ -15,9 +15,15 @@ open Fake.IO.FileSystemOperators open Fake.IO.Globbing.Operators open Fake.Core.TargetOperators open Fake.Api +open Fake.BuildServer open Fantomas open Fantomas.FakeHelpers +BuildServer.install [ + AppVeyor.Installer + Travis.Installer +] + let environVarAsBoolOrDefault varName defaultValue = let truthyConsts = [ "1" @@ -58,7 +64,7 @@ let srcAndTest = let distDir = __SOURCE_DIRECTORY__ @@ "dist" let distGlob = distDir @@ "*.nupkg" -let coverageThresholdPercent = 20 //80 +let coverageThresholdPercent = 50 //80 let coverageReportDir = __SOURCE_DIRECTORY__ @@ "docs" @@ "coverage" @@ -267,7 +273,7 @@ module DocsTool = ] |> watchparser.PrintCommandLineArgumentsFlat - let watch projectpath = + let watch () = dotnet.watch (fun args -> { args with WorkingDirectory = docsToolDir } ) "run" (sprintf "-- watch %s" (watchCLI())) @@ -402,7 +408,7 @@ let dotnetBuild ctx = }) sln -let fsharpAnalyzers ctx = +let fsharpAnalyzers _ = let argParser = ArgumentParser.Create(programName = "fsharp-analyzers") !! srcGlob |> Seq.iter(fun proj -> @@ -620,18 +626,6 @@ let buildDocs _ = DocsTool.build () let watchDocs _ = - let watchBuild () = - !! srcGlob - |> Seq.map(fun proj -> fun () -> - dotnet.watch - (fun opt -> - opt |> DotNet.Options.withWorkingDirectory (IO.Path.GetDirectoryName proj)) - "build" - "" - |> ignore - ) - |> Seq.iter (invokeAsync >> Async.Catch >> Async.Ignore >> Async.Start) - watchBuild () DocsTool.watch () let releaseDocs ctx = @@ -693,13 +687,11 @@ Target.create "ReleaseDocs" releaseDocs "UpdateChangelog" ?=> "GenerateAssemblyInfo" "UpdateChangelog" ==> "PublishToNuGet" -"DotnetBuild" ==> "BuildDocs" "BuildDocs" ==> "ReleaseDocs" "BuildDocs" ?=> "PublishToNuget" "DotnetPack" ?=> "BuildDocs" "GenerateCoverageReport" ?=> "ReleaseDocs" -"DotnetBuild" ==> "WatchDocs" "DotnetRestore" ==> "DotnetBuild" diff --git a/build.sh b/build.sh index 8cddfae..5131032 100755 --- a/build.sh +++ b/build.sh @@ -6,6 +6,4 @@ set -o pipefail echo "Restoring dotnet tools..." dotnet tool restore -dotnet paket install - PAKET_SKIP_RESTORE_TARGETS=true FAKE_DETAILED_ERRORS=true dotnet fake build -t "$@" diff --git a/docs/Api_Reference/EFCore.FSharp/EFCore.FSharp.html b/docs/Api_Reference/EFCore.FSharp/EFCore.FSharp.html new file mode 100644 index 0000000..9df9e7b --- /dev/null +++ b/docs/Api_Reference/EFCore.FSharp/EFCore.FSharp.html @@ -0,0 +1,2 @@ + +EFCore.FSharp docs / EFCore.FSharp.html-EFCore.FSharp
\ No newline at end of file diff --git a/docs/Api_Reference/EFCore.FSharp/EntityFrameworkCore.FSharp.html b/docs/Api_Reference/EFCore.FSharp/EntityFrameworkCore.FSharp.html new file mode 100644 index 0000000..c8c35a4 --- /dev/null +++ b/docs/Api_Reference/EFCore.FSharp/EntityFrameworkCore.FSharp.html @@ -0,0 +1,2 @@ + +EFCore.FSharp docs / EntityFrameworkCore.FSharp.html-EFCore.FSharp
\ No newline at end of file diff --git a/docs/Explanations/Background.html b/docs/Explanations/Background.html new file mode 100644 index 0000000..f725ddd --- /dev/null +++ b/docs/Explanations/Background.html @@ -0,0 +1,4 @@ + +EFCore.FSharp docs / Background.html-EFCore.FSharp

Background

+

Here's a core concept and reasons why this exists at a deeper level.

+
\ No newline at end of file diff --git a/docs/How_Tos/Scaffold_As_Types.html b/docs/How_Tos/Scaffold_As_Types.html new file mode 100644 index 0000000..77e8a65 --- /dev/null +++ b/docs/How_Tos/Scaffold_As_Types.html @@ -0,0 +1,141 @@ + +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

+

When implementing DesignTimeServices as referenced in Getting Started we can declare a ScaffoldOptions object.

+

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

+ + + +
 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/Tutorials/Getting_Started.html b/docs/Tutorials/Getting_Started.html new file mode 100644 index 0000000..d7ee035 --- /dev/null +++ b/docs/Tutorials/Getting_Started.html @@ -0,0 +1,71 @@ + +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 add the dotnet-ef tool
  • +
+

Installing the package

+

paket

+ +
1: 
+
paket install EntityFrameworkCore.FSharp
+
+

dotnet CLI

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

Note

+

This guide is for a simple single-project setup rather than a production-ready topology, however it should hopefully assist with the basics.

+

Configure Design Time Services

+

To override the default Design Time services in EF Core, you will need to add the following file to your project

+ + + +
 1: 
+ 2: 
+ 3: 
+ 4: 
+ 5: 
+ 6: 
+ 7: 
+ 8: 
+ 9: 
+10: 
+11: 
+12: 
+
module DesignTimeServices =
+
+    open Microsoft.Extensions.DependencyInjection
+    open Microsoft.EntityFrameworkCore.Design
+    open EntityFrameworkCore.FSharp
+
+    type DesignTimeServices() =
+        interface IDesignTimeServices with
+            member __.ConfigureDesignTimeServices(serviceCollection: IServiceCollection) =
+                let fSharpServices = EFCoreFSharpServices.Default
+                fSharpServices.ConfigureDesignTimeServices serviceCollection
+                ()
+
+

At this point you can create your model, or scaffold one from an existing database as per usual

+

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

+

To read more about this configuration, check out Scaffolding Types

+
module DesignTimeServices

from GettingStarted
+
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
+
IDesignTimeServices.ConfigureDesignTimeServices(serviceCollection: IServiceCollection) : unit
+
\ No newline at end of file diff --git a/docs/content/cleanups.js b/docs/content/cleanups.js new file mode 100644 index 0000000..79871b2 --- /dev/null +++ b/docs/content/cleanups.js @@ -0,0 +1,5 @@ +$(function() { + // Makes code snippets responsive + $("table").addClass("table-responsive"); +}) + diff --git a/docs/content/hotload.js b/docs/content/hotload.js new file mode 100644 index 0000000..c146f7f --- /dev/null +++ b/docs/content/hotload.js @@ -0,0 +1,4 @@ +var refreshSocket = new WebSocket('ws://' + window.location.host) + .onmessage = () => { + location.reload(); + } diff --git a/docs/content/style.css b/docs/content/style.css new file mode 100644 index 0000000..b0ba005 --- /dev/null +++ b/docs/content/style.css @@ -0,0 +1,333 @@ +@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; +} + +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 new file mode 100644 index 0000000..9874084 --- /dev/null +++ b/docs/content/submenu.js @@ -0,0 +1,21 @@ +$(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 new file mode 100644 index 0000000..7bb300d --- /dev/null +++ b/docs/content/themes.js @@ -0,0 +1,82 @@ + +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 new file mode 100644 index 0000000..e7ee730 --- /dev/null +++ b/docs/content/tips.js @@ -0,0 +1,46 @@ +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 new file mode 100644 index 0000000..348ff58 --- /dev/null +++ b/docs/content/toggle-bootstrap-dark.min.css @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..6ba4734 --- /dev/null +++ b/docs/content/toggle-bootstrap.min.css @@ -0,0 +1 @@ +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/coverage/EntityFrameworkCore.FSharp_AttributeWriter.htm b/docs/coverage/EntityFrameworkCore.FSharp_AttributeWriter.htm deleted file mode 100644 index 3c8afdf..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_AttributeWriter.htm +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Scaffolding.AttributeWriter - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Scaffolding.AttributeWriter
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs
Covered lines:4
Uncovered lines:2
Coverable lines:6
Total lines:259
Line coverage:66.6% (4 of 6)
Covered branches:1
Total branches:2
Branch coverage:50% (1 of 2)
-

Metrics

- - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%0%1
AddParameter(...)100%0%0
ToString()2266.67%66.67%2.15
Invoke(...)100%0%0
Invoke(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Scaffolding
 2
 3open System
 4open System.Collections.Generic
 5open System.Reflection
 6open Microsoft.EntityFrameworkCore
 7open Microsoft.EntityFrameworkCore.Metadata
 8open Microsoft.EntityFrameworkCore.Metadata.Internal
 9open EntityFrameworkCore.FSharp.EntityFrameworkExtensions
 10open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 11open EntityFrameworkCore.FSharp.Internal
 12
 13module ScaffoldingTypes =
 14    type RecordOrType = | ClassType | RecordType
 15    type OptionOrNullable = | OptionTypes | NullableTypes
 16
 17open ScaffoldingTypes
 18open Microsoft.EntityFrameworkCore.Design
 19open Microsoft.EntityFrameworkCore.Internal
 20
 221type internal AttributeWriter(name:string) =
 122    let parameters = List<string>()
 23    member __.AddParameter p =
 024        parameters.Add p
 25    override __.ToString() =
 126        if Seq.isEmpty parameters then
 127            sprintf "[<%s>]" name
 28        else
 029            sprintf "[<%s(%s)>]" name (String.Join(", ", parameters))
 30
 31type FSharpEntityTypeGenerator(code : ICSharpHelper) =
 32    let createAttributeQuick = AttributeWriter >> string
 33    let primitiveTypeNames =
 34        seq {
 35            yield (typedefof<bool>, "bool")
 36            yield (typedefof<byte>, "byte")
 37            yield (typedefof<byte[]>, "byte[]")
 38            yield (typedefof<sbyte>, "sbyte")
 39            yield (typedefof<int>, "int")
 40            yield (typedefof<char>, "char")
 41            yield (typedefof<float32>, "float32")
 42            yield (typedefof<double>, "double")
 43            yield (typedefof<string>, "string")
 44            yield (typedefof<decimal>, "decimal")
 45        }
 46        |> dict
 47
 48    let rec getTypeName optionOrNullable (t:Type) =
 49
 50        if t.IsArray then
 51            (getTypeName optionOrNullable (t.GetElementType())) + "[]"
 52
 53        else if t.GetTypeInfo().IsGenericType then
 54            if t.GetGenericTypeDefinition() = typedefof<Nullable<_>> then
 55                match optionOrNullable with
 56                | NullableTypes ->  "Nullable<" + (getTypeName optionOrNullable (Nullable.GetUnderlyingType(t))) + ">";
 57                | OptionTypes -> (getTypeName optionOrNullable (Nullable.GetUnderlyingType(t))) + " option"
 58            else
 59                let genericTypeDefName = t.Name.Substring(0, t.Name.IndexOf('`'));
 60                let genericTypeArguments = String.Join(", ", t.GenericTypeArguments |> Seq.map(fun t' -> getTypeName opt
 61                genericTypeDefName + "<" + genericTypeArguments + ">";
 62
 63        else
 64            match primitiveTypeNames.TryGetValue t with
 65            | true, value -> value
 66            | _ -> t.Name
 67
 68    let generatePrimaryKeyAttribute (p:IProperty) sb =
 69
 70        let key = getPrimaryKey p
 71
 72        if isNull key || key.Properties.Count <> 1 then
 73            sb
 74        else
 75            sb |> appendLine ("KeyAttribute" |> createAttributeQuick)
 76
 77    let generateRequiredAttribute (p:IProperty) sb =
 78
 79        let isNullableOrOptionType (t:Type) =
 80            let typeInfo = t.GetTypeInfo()
 81            (typeInfo.IsValueType |> not) ||
 82                (typeInfo.IsGenericType && (typeInfo.GetGenericTypeDefinition() = typedefof<Nullable<_>> || typeInfo.Get
 83
 84        if (not p.IsNullable) && (p.ClrType |> isNullableOrOptionType) && (p.IsPrimaryKey() |> not) then
 85            sb |> appendLine ("RequiredAttribute" |> createAttributeQuick)
 86        else
 87            sb
 88
 89    let generateColumnAttribute (p:IProperty) sb =
 90        let columnName = p.GetColumnName()
 91        let columnType = getConfiguredColumnType p
 92
 93        let delimitedColumnName = if isNull columnName |> not && columnName <> p.Name then FSharpUtilities.delimitString
 94        let delimitedColumnType = if isNull columnType |> not then FSharpUtilities.delimitString(columnType) |> Some els
 95
 96        if delimitedColumnName.IsSome || delimitedColumnType.IsSome then
 97            let a = "ColumnAttribute" |> AttributeWriter
 98
 99            match delimitedColumnName with
 100            | Some name -> name |> a.AddParameter
 101            | None -> ()
 102
 103            match delimitedColumnType with
 104            | Some t -> (sprintf "Type = %s" t) |> a.AddParameter
 105            | None -> ()
 106
 107            sb |> appendLine (a |> string)
 108
 109        else
 110            sb
 111
 112
 113    let generateMaxLengthAttribute (p:IProperty) sb =
 114
 115        let ml = p.GetMaxLength()
 116
 117        if ml.HasValue then
 118            let attrName =
 119               if p.ClrType = typedefof<string> then "StringLengthAttribute" else "MaxLengthAttribute"
 120
 121            let a = AttributeWriter(attrName)
 122            a.AddParameter (code.Literal ml.Value)
 123
 124            sb |> append (a |> string)
 125        else
 126            sb
 127
 128    let generateTableAttribute (entityType : IEntityType) sb =
 129        sb |> append "// Annotations"
 130
 131    let GenerateEntityTypeDataAnnotations entityType sb =
 132        sb |> generateTableAttribute entityType
 133
 134
 135    let GenerateConstructor (entityType : IEntityType) sb =
 136        sb |> appendLine "new() = { }"
 137
 138    let GenerateProperties (entityType : IEntityType) (optionOrNullable:OptionOrNullable) sb =
 139        // TODO: add key etc.
 140        sb |> appendLine "// Properties"
 141
 142    let GenerateNavigationProperties (entityType : IEntityType) (optionOrNullable:OptionOrNullable) sb =
 143        sb |> appendLine "// NavigationProperties"
 144
 145    let GenerateClass (entityType : IEntityType) useDataAnnotations optionOrNullable sb =
 146
 147        sb
 148            |>
 149                if useDataAnnotations then
 150                    GenerateEntityTypeDataAnnotations entityType
 151                else
 152                    id
 153            |> appendLine ("type " + entityType.Name + "() =")
 154            |> indent
 155            |> GenerateConstructor entityType
 156            |> GenerateProperties entityType optionOrNullable
 157            |> GenerateNavigationProperties entityType optionOrNullable
 158            |> unindent
 159
 160    let generateRecordTypeEntry useDataAnnotations optionOrNullable (p: IProperty) sb =
 161
 162        if useDataAnnotations then
 163            sb
 164                |> generatePrimaryKeyAttribute p
 165                |> generateRequiredAttribute p
 166                |> generateColumnAttribute p
 167                |> generateMaxLengthAttribute p
 168                |> ignore
 169
 170        let typeName = getTypeName optionOrNullable p.ClrType
 171        sb |> appendLine (sprintf "%s: %s" p.Name typeName) |> ignore
 172        ()
 173
 174    let writeRecordProperties (properties :IProperty seq) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNul
 175        properties
 176        |> Seq.iter(fun p -> generateRecordTypeEntry useDataAnnotations optionOrNullable p sb)
 177
 178        sb
 179
 180    let generateForeignKeyAttribute (n:INavigation) sb =
 181
 182        if n.IsDependentToPrincipal() && n.ForeignKey.PrincipalKey.IsPrimaryKey() then
 183            let a = "ForeignKeyAttribute" |> AttributeWriter
 184            let props = n.ForeignKey.Properties |> Seq.map (fun n' -> n'.Name)
 185            String.Join(",", props) |> FSharpUtilities.delimitString |> a.AddParameter
 186            sb |> appendLine (a |> string)
 187        else
 188            sb
 189
 190    let generateInversePropertyAttribute (n:INavigation) sb =
 191        if n.ForeignKey.PrincipalKey.IsPrimaryKey() then
 192            let inverse = n.FindInverse()
 193            if isNull inverse then
 194                sb
 195            else
 196                let a = "InversePropertyAttribute" |> AttributeWriter
 197                inverse.Name |> FSharpUtilities.delimitString |> a.AddParameter
 198                sb |> appendLine (a |> string)
 199        else
 200            sb
 201
 202    let generateNavigateTypeEntry (n:INavigation) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNullable sb
 203        if useDataAnnotations then
 204            sb
 205                |> generateForeignKeyAttribute n
 206                |> generateInversePropertyAttribute n
 207                |> ignore
 208
 209        let referencedTypeName = n.GetTargetType().Name
 210        let navigationType =
 211            if n.IsCollection() then
 212                sprintf "ICollection<%s>" referencedTypeName
 213            else
 214                referencedTypeName
 215        sb |> appendLine (sprintf "%s: %s" n.Name navigationType) |> ignore
 216
 217    let writeNavigationProperties (nav:INavigation seq) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNulla
 218        nav |> Seq.iter(fun n -> generateNavigateTypeEntry n useDataAnnotations skipFinalNewLine optionOrNullable sb)
 219        sb
 220
 221    let GenerateRecord (entityType : IEntityType) (useDataAnnotations:bool) optionOrNullable sb =
 222
 223        let properties =
 224            entityType.GetProperties()
 225            |> Seq.sortBy(fun p -> p.GetColumnOrdinal())
 226
 227        let navProperties =
 228            entityType
 229                    |> EntityTypeExtensions.GetNavigations
 230                    |> Seq.sortBy(fun n -> ((if n.IsDependentToPrincipal() then 0 else 1), (if n.IsCollection() then 1 e
 231
 232        let navsIsEmpty = navProperties |> Seq.isEmpty
 233
 234        sb
 235            |> appendLine ("CLIMutable" |> createAttributeQuick)
 236            |> appendLine ("type " + entityType.Name + " = {")
 237            |> indent
 238            |> writeRecordProperties properties useDataAnnotations navsIsEmpty optionOrNullable
 239            |> writeNavigationProperties navProperties useDataAnnotations true optionOrNullable
 240            |> unindent
 241            |> appendLine "}"
 242            |> appendEmptyLine
 243
 244
 245    let writeCode (entityType: IEntityType) (useDataAnnotation: bool) createTypesAs optionOrNullable sb =
 246
 247        let generate =
 248            match createTypesAs with
 249            | ClassType -> GenerateClass
 250            | RecordType -> GenerateRecord
 251
 252        sb
 253            |> indent
 254            |> generate entityType useDataAnnotation optionOrNullable
 255            |> string
 256
 257    interface Microsoft.EntityFrameworkCore.Scaffolding.Internal.ICSharpEntityTypeGenerator with
 258        member __.WriteCode(entityType, _, useDataAnnotations) =
 259            writeCode entityType useDataAnnotations RecordOrType.RecordType OptionOrNullable.OptionTypes (IndentedString
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_Conversion.htm b/docs/coverage/EntityFrameworkCore.FSharp_Conversion.htm deleted file mode 100644 index 4b44b87..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_Conversion.htm +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Conversion - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Conversion
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/ValueConverters/Converters.fs
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:21
Line coverage:0% (0 of 6)
Covered branches:0
Total branches:0
-

Metrics

- - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
toOption()100%0%0
fromOption()100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/ValueConverters/Converters.fs

- - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp
 2
 3module Conversion =
 4
 5  open Microsoft.FSharp.Linq.RuntimeHelpers
 6  open System
 7  open System.Linq.Expressions
 8
 9  let toOption<'T> =
 010    <@ Func<'T, 'T option>(fun (x : 'T) -> match box x with null -> None | _ -> Some x) @>
 011    |> LeafExpressionConverter.QuotationToExpression
 012    |> unbox<Expression<Func<'T, 'T option>>>
 13
 14  let fromOption<'T> =
 015    <@ Func<'T option, 'T>(fun (x : 'T option) -> match x with Some y -> y | None -> Unchecked.defaultof<'T>) @>
 016    |> LeafExpressionConverter.QuotationToExpression
 017    |> unbox<Expression<Func<'T option, 'T>>>
 18
 19type OptionConverter<'T> () =
 20  inherit Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'T option, 'T>
 21            (Conversion.fromOption, Conversion.toOption)
-
-
-
-

Methods/Properties

-toOption()
-fromOption()
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_EFCoreFSharpServices.htm b/docs/coverage/EntityFrameworkCore.FSharp_EFCoreFSharpServices.htm deleted file mode 100644 index 7ae07bd..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_EFCoreFSharpServices.htm +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.EFCoreFSharpServices - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.EFCoreFSharpServices
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/EFCoreFSharpServices.fs
Covered lines:11
Uncovered lines:0
Coverable lines:11
Total lines:26
Line coverage:100% (11 of 11)
Covered branches:0
Total branches:0
-

Metrics

- - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor()10100%0%1
Microsoft-EntityFrameworkCore-Design-IDesignTimeServices-ConfigureDesignTimeServices(...)10100%0%1
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/EFCoreFSharpServices.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp
 2
 3open Microsoft.EntityFrameworkCore.Design
 4open Microsoft.EntityFrameworkCore.Migrations.Design
 5open Microsoft.EntityFrameworkCore.Scaffolding
 6open Microsoft.EntityFrameworkCore.Scaffolding.Internal
 7open Microsoft.Extensions.DependencyInjection
 8
 9open EntityFrameworkCore.FSharp.Scaffolding
 10open EntityFrameworkCore.FSharp.Scaffolding.Internal
 11open EntityFrameworkCore.FSharp.Migrations.Design
 12open EntityFrameworkCore.FSharp.Internal
 13
 214type EFCoreFSharpServices() =
 15    interface IDesignTimeServices with
 16        member __.ConfigureDesignTimeServices(services: IServiceCollection) =
 217            services
 218                .AddSingleton<ICSharpHelper, FSharpHelper>()
 219                .AddSingleton<ICSharpEntityTypeGenerator, FSharpEntityTypeGenerator>()
 220                .AddSingleton<ICSharpDbContextGenerator, FSharpDbContextGenerator>()
 221                .AddSingleton<IModelCodeGenerator, FSharpModelGenerator>()
 222                .AddSingleton<ICSharpMigrationOperationGenerator, FSharpMigrationOperationGenerator>()
 223                .AddSingleton<ICSharpSnapshotGenerator, FSharpSnapshotGenerator>()
 224                .AddSingleton<IMigrationsCodeGenerator, FSharpMigrationsGenerator>()
 225                .AddSingleton<IMigrationsScaffolder, FSharpMigrationsScaffolder>()
 226                .AddSingleton<FSharpMigrationsGeneratorDependencies>() |> ignore
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_EntityFrameworkExtensions.htm b/docs/coverage/EntityFrameworkCore.FSharp_EntityFrameworkExtensions.htm deleted file mode 100644 index c3dadde..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_EntityFrameworkExtensions.htm +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.EntityFrameworkExtensions - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.EntityFrameworkExtensions
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs
Covered lines:5
Uncovered lines:15
Coverable lines:20
Total lines:67
Line coverage:25% (5 of 20)
Covered branches:0
Total branches:0
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
getConfiguredColumnType(...)100%0%0
getPrimaryKey(...)100%0%0
getNamespaces(...)10100%0%1
sortNamespaces(...)100%0%0
Invoke(...)100%0%0
getId(...)100%0%0
findMapping(...)10100%0%1
getDisplayName(...)10100%0%1
getDeclaredProperties(...)100%0%0
getDeclaredKeys(...)100%0%0
getDeclaredIndexes(...)100%0%0
getData(...)100%0%0
findDeclaredPrimaryKey(...)100%0%0
getDeclaredForeignKeys(...)100%0%0
getDeclaredReferencingForeignKeys(...)100%0%0
findOwnership(...)100%0%0
entityDbSetName(...)10100%0%1
modelEntityTypeErrors(...)10100%0%1
toAnnotatable(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp
 2
 3open System
 4open Microsoft.EntityFrameworkCore.Internal
 5open Microsoft.EntityFrameworkCore.Metadata
 6open Microsoft.EntityFrameworkCore.Infrastructure
 7open Microsoft.EntityFrameworkCore.Storage
 8open Microsoft.EntityFrameworkCore
 9open Microsoft.EntityFrameworkCore.Metadata.Internal
 10
 11module internal EntityFrameworkExtensions =
 12
 13    let getConfiguredColumnType =
 014        Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalPropertyExtensions.GetConfiguredColumnType
 15
 16    let getPrimaryKey (p:IProperty) =
 017        (p :?> Microsoft.EntityFrameworkCore.Metadata.Internal.Property).PrimaryKey
 18
 19    let getNamespaces =
 120        Microsoft.EntityFrameworkCore.Internal.TypeExtensions.GetNamespaces
 21
 22    let sortNamespaces ns =
 023        let namespaceComparer = Microsoft.EntityFrameworkCore.Design.Internal.NamespaceComparer()
 024        ns |> List.sortWith (fun x y -> namespaceComparer.Compare(x, y))
 25
 26    let getId =
 027        Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationExtensions.GetId
 28
 29    let findMapping (p:IProperty) =
 2330        p.FindTypeMapping()
 31
 32    let getDisplayName =
 1533        Microsoft.EntityFrameworkCore.EntityTypeExtensions.DisplayName
 34
 35    let getDeclaredProperties =
 036        Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredProperties
 37
 38    let getDeclaredKeys =
 039        Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredKeys
 40
 41    let getDeclaredIndexes =
 042        Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredIndexes
 43
 44    let getData (b:bool) (entityType:IEntityType) =
 045        entityType.GetSeedData(b)
 46
 47    let findDeclaredPrimaryKey =
 048        Microsoft.EntityFrameworkCore.Metadata.Internal.EntityTypeExtensions.FindDeclaredPrimaryKey
 49
 50    let getDeclaredForeignKeys =
 051        Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredForeignKeys
 52
 53    let getDeclaredReferencingForeignKeys =
 054        Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredReferencingForeignKeys
 55
 56    let findOwnership (entityType : IEntityType) =
 057        (entityType :?> Microsoft.EntityFrameworkCore.Metadata.Internal.EntityType)
 058            |> Microsoft.EntityFrameworkCore.EntityTypeExtensions.FindOwnership
 59
 60    let entityDbSetName (e : IEntityType) =
 161        e.GetDbSetName()
 62
 63    let modelEntityTypeErrors (m : IModel) =
 264        m.GetEntityTypeErrors()
 65
 66    let toAnnotatable (a : IAnnotatable) =
 067        a
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_Extensions.htm b/docs/coverage/EntityFrameworkCore.FSharp_Extensions.htm deleted file mode 100644 index c50e564..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_Extensions.htm +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Extensions - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Extensions
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs
Covered lines:9
Uncovered lines:17
Coverable lines:26
Total lines:56
Line coverage:34.6% (9 of 26)
Covered branches:0
Total branches:0
-

Metrics

- - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
ModelBuilder.UseValueConverterForType(...)100%0%0
ModelBuilder.UseValueConverterForType(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
ModelBuilder.RegisterOptionTypes(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
registerOptionTypes(...)100%0%0
useValueConverter(...)100%0%0
useValueConverterForType(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp
 2
 3open System
 4open Microsoft.EntityFrameworkCore
 5open Microsoft.EntityFrameworkCore.Storage.ValueConversion
 6open System.Runtime.CompilerServices
 7
 8module Extensions =
 9
 10    let private genericOptionConverterType = typedefof<OptionConverter<_>>
 11
 12    type ModelBuilder with
 13
 14        member this.UseValueConverterForType<'a>(converter : ValueConverter) =
 015            this.UseValueConverterForType(typeof<'a>, converter)
 16
 17        member this.UseValueConverterForType(``type`` : Type, converter : ValueConverter) =
 18
 019            this.Model.GetEntityTypes()
 020            |> Seq.iter(fun e ->
 021                e.ClrType.GetProperties()
 022                |> Seq.filter(fun p -> p.PropertyType = ``type``)
 023                |> Seq.iter(fun p ->
 024                    this.Entity(e.Name).Property(p.Name).HasConversion(converter) |> ignore
 025                )
 026            )
 27
 028            this
 29
 30        member this.RegisterOptionTypes() =
 31
 32            let makeOptionConverter t =
 033                let underlyingType = SharedTypeExtensions.unwrapOptionType t
 034                let converterType = genericOptionConverterType.MakeGenericType(underlyingType)
 035                let converter = converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter
 036                converter
 37
 138            let converterDetails =
 139                this.Model.GetEntityTypes()
 140                |> Seq.collect (fun e -> e.GetProperties())
 141                |> Seq.filter (fun p -> SharedTypeExtensions.isOptionType p.ClrType)
 142                |> Seq.map(fun p -> (p.Name, p.DeclaringType.Name, (makeOptionConverter p.ClrType)) )
 43
 144            converterDetails
 145            |> Seq.iter(fun (propName, entityName, converter) ->
 146                this.Entity(entityName).Property(propName).HasConversion(converter) |> ignore
 147            )
 48
 49    let registerOptionTypes (modelBuilder : ModelBuilder) =
 050        modelBuilder.RegisterOptionTypes()
 51
 52    let useValueConverter<'a> (converter : ValueConverter) (modelBuilder : ModelBuilder) =
 053        modelBuilder.UseValueConverterForType<'a>(converter)
 54
 55    let useValueConverterForType (``type`` : Type) (converter : ValueConverter) (modelBuilder : ModelBuilder) =
 056        modelBuilder.UseValueConverterForType(``type``, converter)
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpDbContextGenerator.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpDbContextGenerator.htm deleted file mode 100644 index 9d3e04a..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpDbContextGenerator.htm +++ /dev/null @@ -1,897 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Scaffolding.FSharpDbContextGenerator - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Scaffolding.FSharpDbContextGenerator
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs
Covered lines:54
Uncovered lines:47
Coverable lines:101
Total lines:668
Line coverage:53.4% (54 of 101)
Covered branches:6
Total branches:22
Branch coverage:27.2% (6 of 22)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)2281.82%66.67%2.02
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)220%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)680%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
GenerateNext(...)400%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)680%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)22100%66.67%2
Invoke(...)100%0%0
Microsoft-EntityFrameworkCore-Scaffolding-Internal-ICSharpDbContextGenerator-WriteCode(...)44100%100%4
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Scaffolding
 2
 3open System
 4open Microsoft.EntityFrameworkCore
 5open Microsoft.EntityFrameworkCore.Metadata
 6open Microsoft.EntityFrameworkCore.Metadata.Internal
 7open Microsoft.EntityFrameworkCore.Internal
 8open Microsoft.EntityFrameworkCore.Scaffolding
 9
 10open EntityFrameworkCore.FSharp.EntityFrameworkExtensions
 11open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 12open EntityFrameworkCore.FSharp.Internal
 13open Microsoft.EntityFrameworkCore.Infrastructure
 14open Microsoft.EntityFrameworkCore.Design
 15open Microsoft.EntityFrameworkCore.Diagnostics
 16open Microsoft.EntityFrameworkCore.Metadata.Conventions
 17open Microsoft.EntityFrameworkCore.ChangeTracking.Internal
 18
 19#nowarn "0044"
 20
 21open System.Collections.Generic
 22open EntityFrameworkCore.FSharp
 23
 324type FSharpDbContextGenerator
 25    (providerCodeGenerators: IProviderConfigurationCodeGenerator seq,
 326        annotationCodeGenerator : IAnnotationCodeGenerator,
 327        code : ICSharpHelper) =
 28
 329    let providerCodeGenerator =
 330        if Seq.isEmpty providerCodeGenerators then
 031            let name = "providerCodeGenerators"
 032            invalidArg name (AbstractionsStrings.CollectionArgumentIsEmpty name)
 33        else
 334            providerCodeGenerators |> Seq.tryLast
 35
 336    let mutable _entityTypeBuilderInitialized = false
 37
 338    let entityLambdaIdentifier = "entity"
 39
 340    let defaultNamespaces =
 341        [
 342            "System"
 343            "System.Collections.Generic"
 344            "Microsoft.EntityFrameworkCore"
 345            "Microsoft.EntityFrameworkCore.Metadata"
 346            "EntityFrameworkCore.FSharp.Extensions"
 347        ]
 48
 49    let writeNamespaces ``namespace`` (sb:IndentedStringBuilder) =
 50        sb
 51            |> append "namespace " |> appendLine ``namespace``
 52            |> appendEmptyLine
 53            |> writeNamespaces defaultNamespaces
 54            |> appendEmptyLine
 55
 56    let generateType (contextName:string) (sb:IndentedStringBuilder) =
 57        sb
 58            |> append "open " |> appendLine (contextName.Replace("Context", "Domain"))
 59            |> appendEmptyLine
 60            |> append "type " |> append contextName |> appendLine " ="
 61            |> indent
 62            |> appendLine "inherit DbContext"
 63            |> appendEmptyLine
 64            |> appendLine "new() = { inherit DbContext() }"
 65            |> append "new(options : DbContextOptions<" |> append contextName |> appendLine ">) ="
 66            |> appendLineIndent "{ inherit DbContext(options) }"
 67            |> appendEmptyLine
 68
 69    let generateDbSet (sb:IndentedStringBuilder) (entityType : IEntityType) =
 70
 71        let dbSetName = entityDbSetName entityType
 72        let mutableName = "_" + dbSetName
 73
 74        sb
 75            |> appendLine "[<DefaultValue>]"
 76            |> append "val mutable private " |> append mutableName |> append " : DbSet<" |> append entityType.Name |> ap
 77            |> append "member this." |> appendLine dbSetName
 78            |> indent
 79            |> append "with get() = this." |> appendLine mutableName
 80            |> append "and set v = this." |> append mutableName |> appendLine " <- v"
 81            |> unindent
 82            |> ignore
 83
 84        sb.AppendLine() |> ignore
 85
 86    let generateDbSets (model:IModel) (sb:IndentedStringBuilder) =
 87
 88        model.GetEntityTypes()
 189            |> Seq.iter(fun entityType -> entityType |> generateDbSet sb)
 90
 91        if model.GetEntityTypes() |> Seq.isEmpty |> not then
 92            sb |> appendEmptyLine |> ignore
 93
 94        sb
 95
 96    let generateEntityTypeErrors (model:IModel) (sb:IndentedStringBuilder) =
 97
 98        let entityTypeErrors = modelEntityTypeErrors model
 99
 100        entityTypeErrors
 0101            |> Seq.iter (fun e -> sb |> appendLine (sprintf "// %s Please see the warning messages." e.Value) |> ignore)
 102
 103        if entityTypeErrors |> Seq.isEmpty |> not then
 104            sb |> appendEmptyLine |> ignore
 105
 106        sb
 107
 108    let generateOnConfiguring (connectionString:string) (sb:IndentedStringBuilder) =
 109
 110        let connStringLine =
 111            match providerCodeGenerator with
 112            | Some pcg ->
 113                let contextOptions = pcg.GenerateContextOptions()
 114                let useProviderCall =
 115                    if isNull contextOptions then
 116                        pcg.GenerateUseProvider(connectionString, pcg.GenerateProviderOptions())
 117                    else
 118                        pcg.GenerateUseProvider(connectionString, pcg.GenerateProviderOptions()).Chain(contextOptions)
 119
 120                let fragment = code.Fragment useProviderCall
 121
 122                sprintf "optionsBuilder%s |> ignore" fragment
 123            | None ->
 124                let name = "providerCodeGenerators"
 125                invalidArg name (AbstractionsStrings.CollectionArgumentIsEmpty name)
 126
 127        sb
 128            |> appendLine "override this.OnConfiguring(optionsBuilder: DbContextOptionsBuilder) ="
 129            |> indent
 130            |> appendLine "if not optionsBuilder.IsConfigured then"
 131            |> indent
 132            |> appendLine connStringLine
 133            |> appendLine "()"
 134            |> appendEmptyLine
 135            |> unindent
 136            |> unindent
 137
 138    let removeAnnotation (annotationToRemove : string) (annotations : IAnnotation seq) =
 44139        annotations |> Seq.filter (fun a -> a.Name <> annotationToRemove)
 140
 141    let checkAnnotation (model:IModel) (annotation: IAnnotation) =
 142        if annotationCodeGenerator.IsHandledByConvention(model, annotation) then
 143            (annotation |> Some, None)
 144        else
 145            let methodCall = annotationCodeGenerator.GenerateFluentApi(model, annotation)
 146            let line = FSharpUtilities.generate(methodCall)
 147
 148            if isNull line then
 149                (None, None)
 150            else
 151                (annotation |> Some, line |> Some)
 152
 153    let generateAnnotations (annotations: IAnnotation seq) =
 154        annotations
 155        |> Seq.map (fun a ->
 0156            let name = FSharpUtilities.delimitString(a.Name)
 0157            let literal = FSharpUtilities.generateLiteral(a.Value)
 0158            sprintf ".HasAnnotation(%s, %s)" name literal)
 159
 160    let generateEntityTypes (entities: IEntityType seq) useDataAnnotations (sb:IndentedStringBuilder) =
 161        sb
 162
 163    let generateSequence (s: ISequence) (sb:IndentedStringBuilder) =
 164
 165        let writeLineIfTrue truth name parameter (sb:IndentedStringBuilder) =
 0166            if truth then
 0167                sb |> appendLine (sprintf ".%s(%A)" name parameter)
 0168            else sb
 169
 170        let methodName =
 171            if s.ClrType = Sequence.DefaultClrType then
 172                "HasSequence"
 173            else
 174                sprintf "HasSequence<%s>" (FSharpUtilities.getTypeName(s.ClrType))
 175
 176        let parameters =
 177            if (s.Schema |> String.IsNullOrEmpty) && (s.Model.GetDefaultSchema() <> s.Schema) then
 0178                sprintf "%s, %s" (s.Name |> FSharpUtilities.delimitString) (s.Schema |> FSharpUtilities.delimitString)
 179            else
 180                s.Name |> FSharpUtilities.delimitString
 181
 182        sb
 0183            |> appendLine (sprintf "modelBuilder.%s(%s)" methodName parameters)
 184            |> indent
 185            |> writeLineIfTrue (s.StartValue <> (Sequence.DefaultStartValue |> int64)) "StartsAt" s.StartValue
 186            |> writeLineIfTrue (s.IncrementBy <> Sequence.DefaultIncrementBy) "IncrementsBy" s.IncrementBy
 187            |> writeLineIfTrue (s.MinValue <> Sequence.DefaultMinValue) "HasMin" s.MinValue
 188            |> writeLineIfTrue (s.MaxValue <> Sequence.DefaultMaxValue) "HasMax" s.MaxValue
 189            |> writeLineIfTrue (s.IsCyclic <> Sequence.DefaultIsCyclic) "IsCyclic" ""
 190            |> appendEmptyLine
 191            |> unindent
 192            |> ignore
 193
 194    let isHandledByConvention (annotatable : IAnnotatable) annotation =
 195        match annotatable with
 196        | :? IModel as m -> annotationCodeGenerator.IsHandledByConvention(m, annotation)
 197        | :? IEntityType as e -> annotationCodeGenerator.IsHandledByConvention(e, annotation)
 198        | :? IKey as k -> annotationCodeGenerator.IsHandledByConvention(k, annotation)
 199        | :? IForeignKey as fk -> annotationCodeGenerator.IsHandledByConvention(fk, annotation)
 200        | :? IProperty as p -> annotationCodeGenerator.IsHandledByConvention(p, annotation)
 201        | :? IIndex as i -> annotationCodeGenerator.IsHandledByConvention(i, annotation)
 202        | _ -> failwith "Unhandled pattern match in isHandledByConvention"
 203
 204    let generateFluentApiWithLanguage (annotatable : IAnnotatable) annotation =
 205        match annotatable with
 206        | :? IModel as m -> annotationCodeGenerator.GenerateFluentApi(m, annotation)
 207        | :? IEntityType as e -> annotationCodeGenerator.GenerateFluentApi(e, annotation)
 208        | :? IKey as k -> annotationCodeGenerator.GenerateFluentApi(k, annotation)
 209        | :? IForeignKey as fk -> annotationCodeGenerator.GenerateFluentApi(fk, annotation)
 210        | :? IProperty as p -> annotationCodeGenerator.GenerateFluentApi(p, annotation)
 211        | :? IIndex as i -> annotationCodeGenerator.GenerateFluentApi(i, annotation)
 212        | _ -> failwith "Unhandled pattern match in generateFluentApiWithLanguage"
 213
 214    let generateFluentApi (annotatable : IAnnotatable) annotation =
 215        match annotatable with
 216        | :? IModel as m -> annotationCodeGenerator.GenerateFluentApi(m, annotation)
 217        | :? IEntityType as e -> annotationCodeGenerator.GenerateFluentApi(e, annotation)
 218        | :? IKey as k -> annotationCodeGenerator.GenerateFluentApi(k, annotation)
 219        | :? IForeignKey as fk -> annotationCodeGenerator.GenerateFluentApi(fk, annotation)
 220        | :? IProperty as p -> annotationCodeGenerator.GenerateFluentApi(p, annotation)
 221        | :? IIndex as i -> annotationCodeGenerator.GenerateFluentApi(i, annotation)
 222        | _ -> failwith "Unhandled pattern match in generateFluentApi"
 223
 224    let generateLambdaToKey (properties : IReadOnlyList<IProperty>) lambdaIdentifier =
 225        match properties.Count with
 226        | 0 -> ""
 2227        | 1 -> sprintf "%s.%s" lambdaIdentifier (properties.[0].Name)
 228        | _ ->
 229            let props =
 0230                properties |> Seq.map (fun p -> sprintf "%s.%s" lambdaIdentifier p.Name)
 231
 232            sprintf "(%s)" (String.Join(", ", props))
 233
 234    let generatePropertyNameArray (properties : IReadOnlyList<IProperty>) =
 235
 236        let props =
 0237            properties |> Seq.map (fun p -> code.Literal p.Name)
 238
 239        sprintf "[| %s |]" (String.Join("; ", props))
 240
 241    let getLinesFromAnnotations (annotatable : IAnnotatable) annotations =
 242        let annotationsToRemove = ResizeArray<IAnnotation>()
 243        let lines = ResizeArray<string>()
 244
 245        annotations
 246        |> Seq.iter (fun a ->
 247
 0248            if isHandledByConvention annotatable a then
 0249                annotationsToRemove.Add a
 250            else
 0251                let methodCall = generateFluentApi annotatable a
 252
 253                let line =
 0254                    if isNull methodCall then
 0255                        generateFluentApiWithLanguage annotatable a |> code.Fragment
 256                    else
 0257                        code.Fragment methodCall
 258
 0259                if not (isNull line) then
 0260                    lines.Add line
 0261                    annotationsToRemove.Add a
 262        )
 263
 264        annotations |> Seq.except annotationsToRemove |> generateAnnotations |> lines.AddRange
 265        lines |> Seq.toList
 266
 267    let initializeEntityTypeBuilder (entityType: IEntityType) sb =
 268
 269        if not _entityTypeBuilderInitialized then
 270            sb
 271            |> appendEmptyLine
 2272            |> appendLine (sprintf "modelBuilder.Entity<%s>(fun %s ->" entityType.Name entityLambdaIdentifier)
 273            |> indent
 274            |> ignore
 275
 276        _entityTypeBuilderInitialized <- true
 277
 278    let appendMultiLineFluentApi entityType lines sb =
 279
 280        if lines |> Seq.isEmpty then
 281            ()
 282        else
 283
 284            initializeEntityTypeBuilder entityType sb
 285
 286            sb
 287            |> indent
 288            |> appendEmptyLine
 289            |> appendLine entityLambdaIdentifier
 290            |> indent
 291            |> ignore
 292
 293            lines
 2294            |> Seq.iter(fun l -> sb |> appendLine l |> ignore)
 295
 296            sb
 297            |> appendLine "|> ignore"
 298            |> unindent
 299            |> unindent
 300            |> ignore
 301
 302    let generateKeyGuardClause (key : IKey) (annotations : IAnnotation list) useDataAnnotations explicitName =
 303        if key.Properties.Count = 1 && annotations.IsEmpty then
 304            (*
 305            let ck = key :?> Key
 306            let kvc = KeyDiscoveryConvention.
 307            let props =
 308                KeyDiscoveryConvention.DiscoverKeyProperties(
 309                    ck.DeclaringEntityType,
 310                    (key.Properties |> Seq.map(fun p -> p :> IConventionProperty) |> Seq.toList))
 311
 312            if key.Properties.StructuralSequenceEqual(props |> Seq.cast) then
 313                true    *)
 314            if (not explicitName) && useDataAnnotations then
 315                true
 316            else false
 317        else
 318            false
 319
 320    let generateKey (key : IKey) useDataAnnotations sb =
 321
 322        if isNull key then
 323            ()
 324        else
 325
 326            let annotations =
 327                key.GetAnnotations()
 328                |> removeAnnotation RelationalAnnotationNames.Name
 329                |> Seq.toList
 330
 331            let explicitName = key.GetName() <> key.GetDefaultName()
 332
 333            let shouldExitEarly = generateKeyGuardClause key annotations useDataAnnotations explicitName
 334
 335            if shouldExitEarly then
 336                ()
 337            else
 338
 339                let lines = ResizeArray<string>()
 340                lines.Add(sprintf ".HasKey(fun e -> %s :> obj)" (generateLambdaToKey key.Properties "e"))
 341
 342                if explicitName then
 343                    lines.Add(sprintf ".HasName(%s)" (code.Literal (key.GetName())))
 344
 3345                lines.AddRange(getLinesFromAnnotations key annotations)
 346
 4347                sb |> appendMultiLineFluentApi key.DeclaringEntityType lines
 348
 349    let generateTableName (entityType : IEntityType) sb =
 350
 351        let tableName = entityType.GetTableName()
 352        let schema = entityType.GetSchema()
 353        let defaultSchema = entityType.Model.GetDefaultSchema()
 354
 355        let explicitSchema = not (isNull schema) && schema <> defaultSchema
 356        let explicitTable = explicitSchema || (not (isNull tableName) && tableName <> entityType.GetDbSetName())
 357
 358        if explicitTable then
 359
 360            let parameterString =
 361                if explicitSchema then
 0362                    sprintf "%s, %s" (code.Literal tableName) (code.Literal schema)
 363                else
 364                    code.Literal tableName
 365
 366
 367            let lines = ResizeArray<string>()
 368            lines.Add(sprintf ".ToTable(%s)" parameterString)
 369
 0370            appendMultiLineFluentApi entityType lines sb
 371
 372    let generateIndex (index : IIndex) sb =
 373        let lines = ResizeArray<string>()
 374        lines.Add(sprintf ".HasIndex(%s)" (generateLambdaToKey index.Properties "e"))
 375
 376        let annotations = ResizeArray<IAnnotation>()
 377        annotations.AddRange(index.GetAnnotations())
 378
 379        if not (String.IsNullOrEmpty(string index.[RelationalAnnotationNames.Name])) then
 380            lines.Add(sprintf ".HasName(%s)" (code.Literal (index.GetName())))
 0381            annotations.RemoveAt(annotations.FindIndex(fun i -> i.Name = RelationalAnnotationNames.Name))
 382
 383        if index.IsUnique then
 384            lines.Add(".IsUnique()")
 385
 386        if not (isNull (index.GetFilter())) then
 387            lines.Add(sprintf ".HasFilter(%s)" (code.Literal (index.GetFilter())))
 0388            annotations.RemoveAt(annotations.FindIndex(fun i -> i.Name = RelationalAnnotationNames.Filter))
 389
 0390        let linesToAdd = getLinesFromAnnotations index annotations
 391        lines.AddRange linesToAdd
 392
 0393        appendMultiLineFluentApi index.DeclaringEntityType lines sb
 394
 395    let generateProperty (property : IProperty) useDataAnnotations sb =
 396
 397        let lines = ResizeArray<string>()
 398        lines.Add(sprintf ".Property(fun e -> e.%s)" property.Name)
 399
 400        let annotations =
 401            property.GetAnnotations()
 402            |> removeAnnotation RelationalAnnotationNames.ColumnName
 403            |> removeAnnotation RelationalAnnotationNames.ColumnType
 404            |> removeAnnotation CoreAnnotationNames.MaxLength
 405            |> removeAnnotation CoreAnnotationNames.TypeMapping
 406            |> removeAnnotation CoreAnnotationNames.Unicode
 407            |> removeAnnotation RelationalAnnotationNames.DefaultValue
 408            |> removeAnnotation RelationalAnnotationNames.DefaultValueSql
 409            |> removeAnnotation RelationalAnnotationNames.ComputedColumnSql
 410            |> removeAnnotation RelationalAnnotationNames.IsFixedLength
 411            |> removeAnnotation ScaffoldingAnnotationNames.ColumnOrdinal
 412            |> Seq.toList
 413
 414        if useDataAnnotations then
 415            if not property.IsNullable &&
 416                (SharedTypeExtensions.isNullableType property.ClrType ||
 417                 SharedTypeExtensions.isOptionType property.ClrType) &&
 418                not (property.IsPrimaryKey()) then
 419                    lines.Add ".IsRequired()"
 420
 421            let columnName = property.GetColumnName()
 422
 423            if not (isNull columnName) && columnName <> property.Name then
 424                lines.Add(sprintf ".HasColumnName(%s)" (code.Literal columnName))
 425
 426            let columnType = property.GetConfiguredColumnType()
 427
 428            if not (isNull columnName) then
 429                lines.Add(sprintf ".HasColumnType(%s)" (code.Literal columnType))
 430
 431            let maxLength = property.GetMaxLength()
 432
 433            if maxLength.HasValue then
 434                lines.Add(sprintf ".HasMaxLength(%s)" (code.Literal maxLength.Value))
 435
 436        if property.IsUnicode().HasValue then
 437            lines.Add(sprintf ".IsUnicode(%s)" (if property.IsUnicode().Value then "" else "false"))
 438
 439        if property.IsFixedLength() then
 440            lines.Add ".IsFixedLength()"
 441
 442        if not (property.GetDefaultValue() |> isNull) then
 443            lines.Add(sprintf ".HasDefaultValue(%s)" (property.GetDefaultValue() |> code.UnknownLiteral))
 444
 445        if not (property.GetDefaultValueSql() |> isNull) then
 446            lines.Add(sprintf ".HasDefaultValueSql(%s)" (property.GetDefaultValueSql() |> code.Literal))
 447
 448        if not (property.GetComputedColumnSql() |> isNull) then
 449            lines.Add(sprintf ".HasComputedColumnSql(%s)" (property.GetComputedColumnSql() |> code.Literal))
 450
 451        let valueGenerated = property.ValueGenerated
 452        let mutable isRowVersion = false
 453
 454        let concreteProp = property :?> Property
 455        if concreteProp.GetValueGeneratedConfigurationSource().HasValue
 456            && RelationalValueGenerationConvention.GetValueGenerated(concreteProp) <> Nullable(valueGenerated) then
 457
 458                let methodName =
 459                    match valueGenerated with
 460                    | ValueGenerated.OnAdd -> "ValueGeneratedOnAdd"
 461                    | ValueGenerated.OnAddOrUpdate ->
 462                        isRowVersion <- property.IsConcurrencyToken
 463                        if isRowVersion then "IsRowVersion" else "ValueGeneratedOnAddOrUpdate"
 464                    | ValueGenerated.Never -> "ValueGeneratedNever"
 465                    | _ -> ""
 466
 467                lines.Add(sprintf ".%s()" methodName)
 468
 469        if property.IsConcurrencyToken && not isRowVersion then
 470            lines.Add ".IsConcurrencyToken()"
 471
 3472        let generatedLines = getLinesFromAnnotations property annotations
 473        lines.AddRange generatedLines
 474
 475        match lines.Count with
 476        | 2 ->
 477            let concatLines =
 478                seq {
 0479                    yield (lines.[0] + lines.[1])
 480                }
 481
 482            appendMultiLineFluentApi property.DeclaringEntityType concatLines sb
 4483        | _ -> appendMultiLineFluentApi property.DeclaringEntityType lines sb
 484
 485
 486    let generateRelationship (fk : IForeignKey) useDataAnnotations sb =
 487
 488        let mutable canUseDataAnnotations = false
 489        let annotations = fk.GetAnnotations() |> ResizeArray
 490
 491        let lines = ResizeArray<string>()
 492
 493        lines.Add(sprintf ".HasOne(%s)" (if isNull fk.DependentToPrincipal then "" else (sprintf "fun d -> d.%s" fk.Depe
 0494        lines.Add(sprintf ".%s(%s)" (if fk.IsUnique then "WithOne" else "WithMany") (if isNull fk.PrincipalToDependent t
 495
 496        if not (fk.PrincipalKey.IsPrimaryKey()) then
 497            canUseDataAnnotations <- false
 0498            lines.Add(sprintf ".HasPrincipalKey%s(%s)" (if fk.IsUnique then (sprintf "<%s>" ((fk.PrincipalEntityType :> 
 499
 0500        lines.Add(sprintf ".HasForeignKey%s(%s)" (if fk.IsUnique then (sprintf "<%s>" ((fk.DeclaringEntityType :> ITypeB
 501
 502        let defaultOnDeleteAction = if fk.IsRequired then DeleteBehavior.Cascade else DeleteBehavior.ClientSetNull
 503
 504        if fk.DeleteBehavior <> defaultOnDeleteAction then
 505            canUseDataAnnotations <- false
 506            lines.Add(sprintf ".OnDelete(%s)" (code.Literal fk.DeleteBehavior))
 507
 508        if not (String.IsNullOrEmpty(string fk.[RelationalAnnotationNames.Name])) then
 509            canUseDataAnnotations <- false
 510            lines.Add(sprintf ".HasConstraintName(%s)" (fk.GetConstraintName() |> code.Literal))
 0511            annotations.RemoveAt(annotations.FindIndex(fun a -> a.Name = RelationalAnnotationNames.Name))
 512
 513
 514        let annotationsToRemove = ResizeArray<IAnnotation>()
 515
 516        annotations
 517        |> Seq.iter (fun a ->
 518
 0519            if isHandledByConvention fk a then
 0520                annotationsToRemove.Add a
 521            else
 0522                let methodCall = generateFluentApi fk a
 523
 524                let line =
 0525                    if isNull methodCall then
 0526                        generateFluentApiWithLanguage fk a
 527                    else
 0528                         methodCall
 529
 0530                if not (isNull line) then
 0531                    canUseDataAnnotations <- false
 0532                    lines.Add (line |> code.Fragment)
 0533                    annotationsToRemove.Add a
 534        )
 535        annotations |> Seq.except annotationsToRemove |> generateAnnotations |> lines.AddRange
 536
 537        if not useDataAnnotations || not canUseDataAnnotations then
 0538            appendMultiLineFluentApi fk.DeclaringEntityType lines sb
 539
 540        ()
 541
 542    let generateEntityType (entityType : IEntityType) (useDataAnnotations : bool) (sb:IndentedStringBuilder) =
 543
 544        sb |> generateKey (entityType.FindPrimaryKey()) useDataAnnotations
 545
 546        let annotations =
 547            entityType.GetAnnotations()
 548            |> removeAnnotation CoreAnnotationNames.ConstructorBinding
 549            |> removeAnnotation RelationalAnnotationNames.TableName
 550            |> removeAnnotation RelationalAnnotationNames.Schema
 551            |> removeAnnotation ScaffoldingAnnotationNames.DbSetName
 552            |> Seq.toList
 553
 554        if not useDataAnnotations then
 555            sb |> generateTableName entityType |> ignore
 556
 557
 3558        let lines = getLinesFromAnnotations entityType annotations
 559
 4560        sb |> appendMultiLineFluentApi entityType lines |> ignore
 561
 0562        entityType.GetIndexes() |> Seq.iter(fun i -> generateIndex i sb)
 1563        entityType.GetProperties() |> Seq.iter(fun p -> generateProperty p useDataAnnotations sb)
 0564        entityType.GetForeignKeys() |> Seq.iter(fun fk -> generateRelationship fk useDataAnnotations sb)
 565
 566        sb
 567
 568
 569    let generateOnModelCreating (model:IModel) (useDataAnnotations:bool) (sb:IndentedStringBuilder) =
 570        sb.AppendLine("override this.OnModelCreating(modelBuilder: ModelBuilder) =")
 571            |> appendLineIndent "base.OnModelCreating(modelBuilder)"
 572            |> ignore
 573
 574        let annotations =
 575            model.GetAnnotations()
 576            |> removeAnnotation CoreAnnotationNames.ProductVersion
 577            |> removeAnnotation CoreAnnotationNames.ChangeTrackingStrategy
 578            |> removeAnnotation CoreAnnotationNames.OwnedTypes
 579            |> removeAnnotation ChangeDetector.SkipDetectChangesAnnotation
 580            |> removeAnnotation RelationalAnnotationNames.MaxIdentifierLength
 581            |> removeAnnotation RelationalAnnotationNames.CheckConstraints
 582            |> removeAnnotation ScaffoldingAnnotationNames.DatabaseName
 583            |> removeAnnotation ScaffoldingAnnotationNames.EntityTypeErrors
 584            |> Seq.toList
 585
 586        let annotationsToRemove =
 587            annotations
 1588            |> Seq.filter(fun a -> a.Name.StartsWith(RelationalAnnotationNames.SequencePrefix, StringComparison.Ordinal)
 589
 590        let checkedAnnotations =
 591            annotations
 2592            |> Seq.map(fun a -> a |> checkAnnotation model)
 593
 3594        let moreAnnotaionsToRemove = checkedAnnotations |> Seq.map(fun (a, _) -> a) |> Seq.filter(fun x -> x.IsSome) |> 
 2595        let lines = checkedAnnotations |> Seq.map(fun (_, l) -> l) |> Seq.filter(fun x -> x.IsSome) |> Seq.map(fun x -> 
 596
 597        let toRemove = annotationsToRemove |> Seq.append moreAnnotaionsToRemove
 598
 599
 600        let lines' = lines |> Seq.append ((annotations |> Seq.except toRemove) |> generateAnnotations)
 601
 602        if lines' |> Seq.isEmpty |> not then
 603            sb
 604                |> appendEmptyLine
 605                |> indent
 606                |> append (sprintf "modelBuilder%s |> ignore" (lines' |> Seq.head))
 607                |> indent
 608                |> appendLines (lines' |> Seq.tail) false
 609                |> unindent
 610                |> unindent
 611                |> ignore
 612
 613        sb |> indent |> ignore
 614
 615        model.GetEntityTypes()
 616        |> Seq.iter(fun e ->
 1617            _entityTypeBuilderInitialized <- false
 618
 1619            sb
 1620            |> generateEntityType e useDataAnnotations
 1621            |> ignore
 622
 1623            if _entityTypeBuilderInitialized then
 1624                sb |> unindent |> appendLine ") |> ignore" |> ignore
 625
 626        )
 627
 0628        model.GetSequences() |> Seq.iter(fun s -> generateSequence s sb |> ignore)
 629
 630        sb
 631        |> appendEmptyLine
 632        |> appendLine "modelBuilder.RegisterOptionTypes()"
 633        |> unindent
 634
 635    let generateClass model contextName connectionString useDataAnnotations sb =
 636        sb
 637            |> generateType contextName
 638            |> generateDbSets model
 639            |> generateEntityTypeErrors model
 640            |> generateOnConfiguring connectionString
 641            |> generateOnModelCreating model useDataAnnotations
 642
 643    interface Microsoft.EntityFrameworkCore.Scaffolding.Internal.ICSharpDbContextGenerator with
 644        member this.WriteCode (model, contextName, connectionString, contextNamespace, modelNamespace, useDataAnnotation
 645
 2646            let sb = IndentedStringBuilder()
 647
 648            let finalContextNamespace =
 2649                if contextNamespace |> isNull then
 1650                    modelNamespace
 651                else
 1652                    contextNamespace
 653
 2654            sb
 2655            |> writeNamespaces (finalContextNamespace)
 2656            |> ignore
 657
 2658            if finalContextNamespace <> modelNamespace then
 1659                sb
 1660                |> appendLine (sprintf "open %s" modelNamespace)
 1661                |> ignore
 662
 2663            sb
 2664            |> indent
 2665            |> generateClass model contextName connectionString useDataAnnotations
 2666            |> ignore
 667
 2668            sb.ToString()
-
-
-
-

Methods/Properties

-.ctor(System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Scaffolding.IProviderConfigurationCodeGenerator>,Microsoft.EntityFrameworkCore.Design.IAnnotationCodeGenerator,Microsoft.EntityFrameworkCore.Design.ICSharpHelper)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(System.Collections.Generic.KeyValuePair`2<System.String,System.String>)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(System.String)
-Invoke(System.Boolean,System.String,a,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(a)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.FSharp.Collections.FSharpList`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IKey)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Collections.Generic.IEnumerable`1<System.String>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.Collections.Generic.List`1<System.String>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Collections.Generic.IEnumerable`1<System.String>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.Collections.Generic.List`1<System.String>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(System.Collections.Generic.List`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IIndex)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Collections.Generic.IEnumerable`1<System.String>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.Collections.Generic.List`1<System.String>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.FSharp.Collections.FSharpList`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Collections.Generic.IEnumerable`1<System.String>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.Collections.Generic.List`1<System.String>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Collections.Generic.IEnumerable`1<System.String>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.Collections.Generic.List`1<System.String>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.FSharp.Collections.FSharpList`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Collections.Generic.IEnumerable`1<System.String>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.FSharp.Collections.FSharpList`1<System.String>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IIndex)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.FSharp.Core.FSharpOption`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(System.Tuple`2<Microsoft.FSharp.Core.FSharpOption`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>,Microsoft.FSharp.Core.FSharpOption`1<System.String>>)
-Invoke(Microsoft.FSharp.Core.FSharpOption`1<System.String>)
-Invoke(System.Tuple`2<Microsoft.FSharp.Core.FSharpOption`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>,Microsoft.FSharp.Core.FSharpOption`1<System.String>>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.ISequence)
-Microsoft-EntityFrameworkCore-Scaffolding-Internal-ICSharpDbContextGenerator-WriteCode(Microsoft.EntityFrameworkCore.Metadata.IModel,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean)
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpEntityTypeGenerator.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpEntityTypeGenerator.htm deleted file mode 100644 index 89a94b3..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpEntityTypeGenerator.htm +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Scaffolding.FSharpEntityTypeGenerator - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Scaffolding.FSharpEntityTypeGenerator
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs
Covered lines:20
Uncovered lines:10
Coverable lines:30
Total lines:259
Line coverage:66.6% (20 of 30)
Covered branches:0
Total branches:4
Branch coverage:0% (0 of 4)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)30100%0%3
Invoke(...)10100%0%1
GenerateNext(...)230100%0%23
Invoke(...)100%0%0
Invoke(...)600%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)340%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
Microsoft-EntityFrameworkCore-Scaffolding-Internal-ICSharpEntityTypeGenerator-WriteCode(...)10100%0%1
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Scaffolding
 2
 3open System
 4open System.Collections.Generic
 5open System.Reflection
 6open Microsoft.EntityFrameworkCore
 7open Microsoft.EntityFrameworkCore.Metadata
 8open Microsoft.EntityFrameworkCore.Metadata.Internal
 9open EntityFrameworkCore.FSharp.EntityFrameworkExtensions
 10open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 11open EntityFrameworkCore.FSharp.Internal
 12
 13module ScaffoldingTypes =
 14    type RecordOrType = | ClassType | RecordType
 15    type OptionOrNullable = | OptionTypes | NullableTypes
 16
 17open ScaffoldingTypes
 18open Microsoft.EntityFrameworkCore.Design
 19open Microsoft.EntityFrameworkCore.Internal
 20
 21type internal AttributeWriter(name:string) =
 22    let parameters = List<string>()
 23    member __.AddParameter p =
 24        parameters.Add p
 25    override __.ToString() =
 26        if Seq.isEmpty parameters then
 27            sprintf "[<%s>]" name
 28        else
 29            sprintf "[<%s(%s)>]" name (String.Join(", ", parameters))
 30
 431type FSharpEntityTypeGenerator(code : ICSharpHelper) =
 532    let createAttributeQuick = AttributeWriter >> string
 233    let primitiveTypeNames =
 234        seq {
 435            yield (typedefof<bool>, "bool")
 436            yield (typedefof<byte>, "byte")
 437            yield (typedefof<byte[]>, "byte[]")
 438            yield (typedefof<sbyte>, "sbyte")
 439            yield (typedefof<int>, "int")
 440            yield (typedefof<char>, "char")
 441            yield (typedefof<float32>, "float32")
 442            yield (typedefof<double>, "double")
 443            yield (typedefof<string>, "string")
 444            yield (typedefof<decimal>, "decimal")
 245        }
 246        |> dict
 47
 48    let rec getTypeName optionOrNullable (t:Type) =
 49
 50        if t.IsArray then
 51            (getTypeName optionOrNullable (t.GetElementType())) + "[]"
 52
 53        else if t.GetTypeInfo().IsGenericType then
 54            if t.GetGenericTypeDefinition() = typedefof<Nullable<_>> then
 55                match optionOrNullable with
 56                | NullableTypes ->  "Nullable<" + (getTypeName optionOrNullable (Nullable.GetUnderlyingType(t))) + ">";
 57                | OptionTypes -> (getTypeName optionOrNullable (Nullable.GetUnderlyingType(t))) + " option"
 58            else
 59                let genericTypeDefName = t.Name.Substring(0, t.Name.IndexOf('`'));
 060                let genericTypeArguments = String.Join(", ", t.GenericTypeArguments |> Seq.map(fun t' -> getTypeName opt
 61                genericTypeDefName + "<" + genericTypeArguments + ">";
 62
 63        else
 64            match primitiveTypeNames.TryGetValue t with
 65            | true, value -> value
 66            | _ -> t.Name
 67
 68    let generatePrimaryKeyAttribute (p:IProperty) sb =
 69
 70        let key = getPrimaryKey p
 71
 72        if isNull key || key.Properties.Count <> 1 then
 73            sb
 74        else
 75            sb |> appendLine ("KeyAttribute" |> createAttributeQuick)
 76
 77    let generateRequiredAttribute (p:IProperty) sb =
 78
 79        let isNullableOrOptionType (t:Type) =
 080            let typeInfo = t.GetTypeInfo()
 81            (typeInfo.IsValueType |> not) ||
 82                (typeInfo.IsGenericType && (typeInfo.GetGenericTypeDefinition() = typedefof<Nullable<_>> || typeInfo.Get
 83
 84        if (not p.IsNullable) && (p.ClrType |> isNullableOrOptionType) && (p.IsPrimaryKey() |> not) then
 85            sb |> appendLine ("RequiredAttribute" |> createAttributeQuick)
 86        else
 87            sb
 88
 89    let generateColumnAttribute (p:IProperty) sb =
 90        let columnName = p.GetColumnName()
 91        let columnType = getConfiguredColumnType p
 92
 93        let delimitedColumnName = if isNull columnName |> not && columnName <> p.Name then FSharpUtilities.delimitString
 94        let delimitedColumnType = if isNull columnType |> not then FSharpUtilities.delimitString(columnType) |> Some els
 95
 96        if delimitedColumnName.IsSome || delimitedColumnType.IsSome then
 97            let a = "ColumnAttribute" |> AttributeWriter
 98
 99            match delimitedColumnName with
 100            | Some name -> name |> a.AddParameter
 101            | None -> ()
 102
 103            match delimitedColumnType with
 104            | Some t -> (sprintf "Type = %s" t) |> a.AddParameter
 105            | None -> ()
 106
 107            sb |> appendLine (a |> string)
 108
 109        else
 110            sb
 111
 112
 113    let generateMaxLengthAttribute (p:IProperty) sb =
 114
 115        let ml = p.GetMaxLength()
 116
 117        if ml.HasValue then
 118            let attrName =
 119               if p.ClrType = typedefof<string> then "StringLengthAttribute" else "MaxLengthAttribute"
 120
 121            let a = AttributeWriter(attrName)
 122            a.AddParameter (code.Literal ml.Value)
 123
 124            sb |> append (a |> string)
 125        else
 126            sb
 127
 128    let generateTableAttribute (entityType : IEntityType) sb =
 129        sb |> append "// Annotations"
 130
 131    let GenerateEntityTypeDataAnnotations entityType sb =
 132        sb |> generateTableAttribute entityType
 133
 134
 135    let GenerateConstructor (entityType : IEntityType) sb =
 136        sb |> appendLine "new() = { }"
 137
 138    let GenerateProperties (entityType : IEntityType) (optionOrNullable:OptionOrNullable) sb =
 139        // TODO: add key etc.
 140        sb |> appendLine "// Properties"
 141
 142    let GenerateNavigationProperties (entityType : IEntityType) (optionOrNullable:OptionOrNullable) sb =
 143        sb |> appendLine "// NavigationProperties"
 144
 145    let GenerateClass (entityType : IEntityType) useDataAnnotations optionOrNullable sb =
 146
 147        sb
 148            |>
 149                if useDataAnnotations then
 0150                    GenerateEntityTypeDataAnnotations entityType
 151                else
 0152                    id
 153            |> appendLine ("type " + entityType.Name + "() =")
 154            |> indent
 155            |> GenerateConstructor entityType
 156            |> GenerateProperties entityType optionOrNullable
 157            |> GenerateNavigationProperties entityType optionOrNullable
 158            |> unindent
 159
 160    let generateRecordTypeEntry useDataAnnotations optionOrNullable (p: IProperty) sb =
 161
 162        if useDataAnnotations then
 163            sb
 164                |> generatePrimaryKeyAttribute p
 165                |> generateRequiredAttribute p
 166                |> generateColumnAttribute p
 167                |> generateMaxLengthAttribute p
 168                |> ignore
 169
 170        let typeName = getTypeName optionOrNullable p.ClrType
 2171        sb |> appendLine (sprintf "%s: %s" p.Name typeName) |> ignore
 172        ()
 173
 174    let writeRecordProperties (properties :IProperty seq) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNul
 175        properties
 6176        |> Seq.iter(fun p -> generateRecordTypeEntry useDataAnnotations optionOrNullable p sb)
 177
 178        sb
 179
 180    let generateForeignKeyAttribute (n:INavigation) sb =
 181
 182        if n.IsDependentToPrincipal() && n.ForeignKey.PrincipalKey.IsPrimaryKey() then
 183            let a = "ForeignKeyAttribute" |> AttributeWriter
 0184            let props = n.ForeignKey.Properties |> Seq.map (fun n' -> n'.Name)
 185            String.Join(",", props) |> FSharpUtilities.delimitString |> a.AddParameter
 186            sb |> appendLine (a |> string)
 187        else
 188            sb
 189
 190    let generateInversePropertyAttribute (n:INavigation) sb =
 191        if n.ForeignKey.PrincipalKey.IsPrimaryKey() then
 192            let inverse = n.FindInverse()
 193            if isNull inverse then
 194                sb
 195            else
 196                let a = "InversePropertyAttribute" |> AttributeWriter
 197                inverse.Name |> FSharpUtilities.delimitString |> a.AddParameter
 198                sb |> appendLine (a |> string)
 199        else
 200            sb
 201
 202    let generateNavigateTypeEntry (n:INavigation) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNullable sb
 203        if useDataAnnotations then
 204            sb
 205                |> generateForeignKeyAttribute n
 206                |> generateInversePropertyAttribute n
 207                |> ignore
 208
 209        let referencedTypeName = n.GetTargetType().Name
 210        let navigationType =
 211            if n.IsCollection() then
 212                sprintf "ICollection<%s>" referencedTypeName
 213            else
 214                referencedTypeName
 0215        sb |> appendLine (sprintf "%s: %s" n.Name navigationType) |> ignore
 216
 217    let writeNavigationProperties (nav:INavigation seq) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNulla
 0218        nav |> Seq.iter(fun n -> generateNavigateTypeEntry n useDataAnnotations skipFinalNewLine optionOrNullable sb)
 219        sb
 220
 221    let GenerateRecord (entityType : IEntityType) (useDataAnnotations:bool) optionOrNullable sb =
 222
 223        let properties =
 224            entityType.GetProperties()
 0225            |> Seq.sortBy(fun p -> p.GetColumnOrdinal())
 226
 227        let navProperties =
 228            entityType
 229                    |> EntityTypeExtensions.GetNavigations
 0230                    |> Seq.sortBy(fun n -> ((if n.IsDependentToPrincipal() then 0 else 1), (if n.IsCollection() then 1 e
 231
 232        let navsIsEmpty = navProperties |> Seq.isEmpty
 233
 234        sb
 235            |> appendLine ("CLIMutable" |> createAttributeQuick)
 236            |> appendLine ("type " + entityType.Name + " = {")
 237            |> indent
 238            |> writeRecordProperties properties useDataAnnotations navsIsEmpty optionOrNullable
 239            |> writeNavigationProperties navProperties useDataAnnotations true optionOrNullable
 240            |> unindent
 241            |> appendLine "}"
 242            |> appendEmptyLine
 243
 244
 245    let writeCode (entityType: IEntityType) (useDataAnnotation: bool) createTypesAs optionOrNullable sb =
 246
 247        let generate =
 248            match createTypesAs with
 0249            | ClassType -> GenerateClass
 1250            | RecordType -> GenerateRecord
 251
 252        sb
 253            |> indent
 254            |> generate entityType useDataAnnotation optionOrNullable
 255            |> string
 256
 257    interface Microsoft.EntityFrameworkCore.Scaffolding.Internal.ICSharpEntityTypeGenerator with
 258        member __.WriteCode(entityType, _, useDataAnnotations) =
 1259            writeCode entityType useDataAnnotations RecordOrType.RecordType OptionOrNullable.OptionTypes (IndentedString
-
-
-
-

Methods/Properties

-.ctor(Microsoft.EntityFrameworkCore.Design.ICSharpHelper)
-Invoke(System.String)
-Invoke(EntityFrameworkCore.FSharp.Scaffolding.AttributeWriter)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.Tuple`2<System.Type,System.String>>&)
-Invoke(System.Type)
-Invoke(System.Type)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.String)
-Invoke(System.Boolean,EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes/OptionOrNullable,Microsoft.EntityFrameworkCore.Metadata.IProperty,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(a)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes/OptionOrNullable)
-Invoke(System.Boolean)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.INavigation,System.Boolean,System.Boolean,a,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(b)
-Invoke(a)
-Invoke(System.Boolean)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.INavigation)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.INavigation)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Boolean,EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes/OptionOrNullable,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.Boolean,EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes/OptionOrNullable,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Microsoft-EntityFrameworkCore-Scaffolding-Internal-ICSharpEntityTypeGenerator-WriteCode(Microsoft.EntityFrameworkCore.Metadata.IEntityType,System.String,System.Boolean)
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpHelper.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpHelper.htm deleted file mode 100644 index 557eb78..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpHelper.htm +++ /dev/null @@ -1,922 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Internal.FSharpHelper - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Internal.FSharpHelper
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Internal/FSharpHelper.fs
Covered lines:146
Uncovered lines:268
Coverable lines:414
Total lines:660
Line coverage:35.2% (146 of 414)
Covered branches:25
Total branches:177
Branch coverage:14.1% (25 of 177)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%0%1
ReferenceFullName(...)83213.33%18.18%49.67
ensureDecimalPlaces(...)220%0%0
literalString(...)3266.67%66.67%3.33
literalBoolean(...)22100%100%2
literalByte(...)100%0%0
literalByteArray(...)100%0%0
Invoke(...)100%0%0
literalStringArray(...)100%0%0
Invoke(...)100%0%0
literalArray(...)100%0%0
Invoke(...)100%0%0
literalChar(...)220%0%0
literalDateTime(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
literalTimeSpan(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
literalDateTimeOffset(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
literalDecimal(...)100%0%0
literalDouble(...)100%0%0
literalFloat32(...)100%0%0
literalGuid(...)100%0%0
literalInt(...)10100%0%1
literalInt64(...)100%0%0
literalSByte(...)100%0%0
literalInt16(...)100%0%0
literalUInt32(...)100%0%0
literalUInt64(...)100%0%0
literalUInt16(...)100%0%0
literalBigInteger(...)100%0%0
literalList(...)420%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
literalArray2D(...)100%0%0
Invoke(...)1240%0%0
Invoke(...)100%0%0
handleArguments(...)220%0%0
handleList(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
handleExpression(...)145120%0%0
getSimpleEnumValue(...)100%0%0
getFlags(...)100%0%0
Invoke(...)100%0%0
getCompositeEnumValue(...)100%0%0
Invoke(...)220%0%0
Invoke(...)100%0%0
Invoke(...)220%0%0
literalEnum(...)320%0%0
LiteralList(...)100%0%0
isLetterChar(...)880%0%0
isIdentifierPartCharacter(...)142880%0%0
isIdentifierStartCharacter(...)6160%0%0
handleScope(...)1380%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
IdentifierWithScope(...)132560%0%0
buildFragment(...)3283.33%66.67%3.04
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
unknownLiteral(...)32153611.94%35.59%731.26
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Fragment(...)30100%0%3
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Identifier(...)320%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Lambda(...)300%0%0
Invoke(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)10100%0%1
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(...)100%0%0
Invoke(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Namespace(...)480%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Reference(...)10100%0%1
Microsoft-EntityFrameworkCore-Design-ICSharpHelper-UnknownLiteral(...)10100%0%1
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Internal/FSharpHelper.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Internal
 2
 3open System
 4open System.Collections.Generic
 5open System.Linq
 6open System.Linq.Expressions
 7open System.Numerics
 8open System.Text
 9open Microsoft.EntityFrameworkCore.Internal
 10open System.Globalization
 11open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 12open EntityFrameworkCore.FSharp.SharedTypeExtensions
 13open Microsoft.EntityFrameworkCore.Design
 14open Microsoft.EntityFrameworkCore.Storage
 15
 816type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) =
 417    let _builtInTypes =
 418        [
 419            (typeof<bool>, "bool")
 420            (typeof<byte>, "byte")
 421            (typeof<sbyte>, "sbyte")
 422            (typeof<char>, "char")
 423            (typeof<int16>, "Int16")
 424            (typeof<int>, "int")
 425            (typeof<int64>, "Int64")
 426            (typeof<uint16>, "UInt16")
 427            (typeof<uint32>, "UInt32")
 428            (typeof<uint64>, "UInt64")
 429            (typeof<decimal>, "decimal")
 430            (typeof<float>, "float")
 431            (typeof<double>, "double")
 432            (typeof<string>, "string")
 433            (typeof<obj>, "obj")
 434        ] |> dict
 35
 436    let _keywords =
 437        [|
 438            "abstract";
 439            "and";
 440            "as";
 441            "asr";
 442            "assert";
 443            "atomic";
 444            "base";
 445            "begin";
 446            "break";
 447            "checked";
 448            "class";
 449            "component";
 450            "const";
 451            "constraint";
 452            "constructor";
 453            "continue";
 454            "default";
 455            "delegate";
 456            "do";
 457            "done";
 458            "downcast";
 459            "downto";
 460            "eager";
 461            "elif";
 462            "else if";
 463            "else";
 464            "end";
 465            "event";
 466            "exception";
 467            "extern";
 468            "external";
 469            "false";
 470            "finally";
 471            "fixed";
 472            "for";
 473            "fun";
 474            "function";
 475            "functor";
 476            "global";
 477            "if";
 478            "in";
 479            "include";
 480            "inherit";
 481            "inline";
 482            "interface";
 483            "internal";
 484            "land";
 485            "lazy";
 486            "let!";
 487            "let";
 488            "lor";
 489            "lsl";
 490            "lsr";
 491            "lxor";
 492            "match";
 493            "member";
 494            "method";
 495            "mixin";
 496            "mod";
 497            "module";
 498            "mutable";
 499            "namespace";
 4100            "new";
 4101            "not struct";
 4102            "not";
 4103            "null";
 4104            "object";
 4105            "of";
 4106            "open";
 4107            "or";
 4108            "override";
 4109            "parallel";
 4110            "private";
 4111            "process";
 4112            "protected";
 4113            "public";
 4114            "pure";
 4115            "rec";
 4116            "return!";
 4117            "return";
 4118            "sealed";
 4119            "select";
 4120            "sig";
 4121            "static";
 4122            "struct";
 4123            "tailcall";
 4124            "then";
 4125            "to";
 4126            "trait";
 4127            "true";
 4128            "try";
 4129            "type";
 4130            "upcast";
 4131            "use!";
 4132            "use";
 4133            "val";
 4134            "virtual";
 4135            "void";
 4136            "volatile"
 4137            "when";
 4138            "while";
 4139            "with";
 4140            "yield!";
 4141            "yield";
 4142          |]
 143
 144    member private this.ReferenceFullName (t: Type) useFullName =
 145
 1146        match _builtInTypes.TryGetValue t with
 1147        | true, value -> value
 148        | _ ->
 0149            if t |> isNullableType then
 0150                sprintf "Nullable<%s>" (this.ReferenceFullName (t |> unwrapNullableType) useFullName)
 0151            elif t |> isOptionType then
 0152                sprintf "%s option" (this.ReferenceFullName (t |> unwrapOptionType) useFullName)
 153            else
 0154                let builder = StringBuilder()
 155
 0156                if t.IsArray then
 0157                    builder
 0158                        .Append(this.ReferenceFullName (t.GetElementType()) false)
 0159                        .Append("[") |> ignore
 160
 0161                    (',', t.GetArrayRank()) |> String |> builder.Append |> ignore
 0162                    builder.Append("]") |> ignore
 163
 0164                elif t.IsNested then
 0165                    builder
 0166                        .Append(this.ReferenceFullName (t.DeclaringType) false)
 0167                        .Append(".") |> ignore
 168
 0169                let name =
 0170                    t.DisplayName(useFullName)
 171
 0172                builder.Append(name) |> string
 173
 174    member private this.ensureDecimalPlaces (number:string) =
 0175        if number.IndexOf('.') >= 0 then number else number + ".0"
 176
 177    member private this.literalString(value: string) =
 48178        if value.Contains(Environment.NewLine) || value.Contains('\r') then
 0179            "@\"" + value.Replace("\"", "\"\"") + "\""
 180        else
 48181            "\"" + value.Replace("\\", "\\\\").Replace("\"", "\\\"") + "\""
 182
 183    member private this.literalBoolean(value: bool) =
 4184        if value then "true" else "false"
 185
 0186    member private this.literalByte (value: byte) = sprintf "(byte %d)" value
 187
 188    member private this.literalByteArray(values: byte[]) =
 0189        let v = values |> Seq.map this.literalByte
 0190        sprintf "[| %s |]" (String.Join("; ", v))
 191
 192    member private this.literalStringArray(values: string[]) =
 0193        let v = values |> Seq.map this.literalString
 0194        sprintf "[| %s |]" (String.Join("; ", v))
 195
 196    member private this.literalArray(values: Array) =
 0197        let v = values.Cast<obj>() |> Seq.map this.unknownLiteral
 0198        sprintf "[| %s |]" (String.Join("; ", v))
 199
 200    member private this.literalChar(value: char) =
 0201        "\'" + (if value = '\'' then "\\'" else value.ToString()) + "\'"
 202
 203    member private this.literalDateTime(value: DateTime) =
 0204        sprintf "DateTime(%d, %d, %d, %d, %d, %d,%d, DateTimeKind.%A)"
 205            value.Year value.Month value.Day value.Hour value.Minute value.Second value.Millisecond value.Kind
 206
 207    member private this.literalTimeSpan(value: TimeSpan) =
 0208        sprintf "TimeSpan(%d, %d, %d, %d, %d)" value.Days value.Hours value.Minutes value.Seconds value.Milliseconds
 209
 210    member private this.literalDateTimeOffset(value: DateTimeOffset) =
 0211        sprintf "DateTimeOffset(%s, %s)" (value.DateTime |> this.literalDateTime) (value.Offset |> this.literalTimeSpan)
 212
 213    member private this.literalDecimal(value: decimal) =
 0214        sprintf "%fm" value
 215
 216    member private this.literalDouble(value: double) =
 0217        (value.ToString("R", CultureInfo.InvariantCulture)) |> this.ensureDecimalPlaces
 218
 219    member private this.literalFloat32(value: float32) =
 0220        sprintf "(float32 %f)" value
 221
 222    member private this.literalGuid(value: Guid) =
 0223        sprintf "Guid(\"%A\")" value
 224
 225    member private this.literalInt(value: int) =
 1226        sprintf "%d" value
 227
 228    member private this.literalInt64(value: Int64) =
 0229        sprintf "%dL" value
 230
 231    member private this.literalSByte(value: sbyte) =
 0232        sprintf "(sbyte %d)" value
 233
 234    member private this.literalInt16(value: Int16) =
 0235        sprintf "%ds" value
 236
 237    member private this.literalUInt32(value: UInt32) =
 0238        sprintf "%du" value
 239
 240    member private this.literalUInt64(value: UInt64) =
 0241        sprintf "%duL" value
 242
 243    member private this.literalUInt16(value: UInt16) =
 0244        sprintf "%dus" value
 245
 246    member private this.literalBigInteger(value : BigInteger) =
 0247        sprintf """BigInteger.Parse("%s", NumberFormatInfo.InvariantInfo)""" (value.ToString(NumberFormatInfo.InvariantI
 248    member private this.literalList (values: IReadOnlyList<obj>) (vertical: bool) (sb:IndentedStringBuilder) =
 249
 0250        let values' = values |> Seq.map this.unknownLiteral
 251
 0252        if not vertical then
 0253            let line = sprintf "[| %s |]" (String.Join("; ", values'))
 0254            sb |> append line
 255        else
 0256            sb
 0257                |> append "[|"
 0258                |> indent
 0259                |> ignore
 260
 0261            values' |> Seq.iter(fun line -> sb |> appendLine line |> ignore)
 262
 0263            sb
 264
 265        |> string
 266
 267    member private this.literalArray2D(values: obj[,]) =
 268
 0269        let rowCount = Array2D.length1 values
 0270        let valuesCount = Array2D.length2 values
 271
 0272        let rowContents =
 0273            [0..rowCount]
 0274            |> Seq.map(fun i ->
 0275                let row' = values.[i, 0..valuesCount]
 0276                let entries = row' |> Seq.map this.unknownLiteral
 0277                sprintf "[ %s ]" (String.Join("; ", entries)) )
 278
 0279        sprintf "array2D [ %s ]" (String.Join("; ", rowContents))
 280
 281    member private this.handleArguments args sb =
 282
 0283        sb |> append "(" |> ignore
 284
 0285        if (this.handleList args false sb) then
 0286            sb |> append ")" |> ignore
 0287            true
 0288        else false
 289
 290    member private this.handleList exps simple sb =
 0291        let mutable separator = String.Empty
 292
 0293        let results =
 0294            exps
 0295                |> Seq.map(fun e ->
 0296                    sb |> append separator |> ignore
 0297
 0298                    let result = this.handleExpression e simple sb
 0299
 0300                    separator <- ", "
 0301                    result )
 302
 0303        results |> Seq.forall (fun r -> r = true)
 304
 305    member private this.handleExpression (expression:Expression) simple (sb:IndentedStringBuilder) =
 0306        match expression.NodeType with
 307        | ExpressionType.NewArrayInit ->
 308
 0309            sb |> append "[| " |> ignore
 0310            this.handleList (expression :?> NewArrayExpression).Expressions true sb |> ignore
 0311            sb |> append " |]" |> ignore
 312
 0313            true
 314        | ExpressionType.Convert ->
 0315            sb |> append "(" |> ignore
 0316            let result = this.handleExpression (expression :?> UnaryExpression).Operand false sb
 0317            sb |> append " :?> " |> append (this.ReferenceFullName expression.Type true) |> append ")" |> ignore
 318
 0319            result
 320        | ExpressionType.New ->
 0321            sb |> append (this.ReferenceFullName expression.Type true) |> ignore
 0322            this.handleArguments ((expression :?> NewExpression).Arguments) sb
 323
 324        | ExpressionType.Call ->
 325
 0326            let mutable exitEarly = false
 0327            let callExpr = expression :?> MethodCallExpression
 328
 0329            if callExpr.Method.IsStatic then
 0330                sb |> append (this.ReferenceFullName callExpr.Method.DeclaringType true) |> ignore
 331            else
 0332                if (not (this.handleExpression callExpr.Object false sb)) then
 0333                    exitEarly <- true
 334
 0335            if exitEarly then
 0336                false
 337            else
 0338                sb |> append "." |> append callExpr.Method.Name |> ignore
 0339                this.handleArguments callExpr.Arguments sb
 340
 341        | ExpressionType.Constant ->
 0342            let value = (expression :?> ConstantExpression).Value
 343            let valueToWrite =
 0344                if simple && (value.GetType() |> isNumeric) then
 0345                    value |> string
 346                else
 0347                    this.unknownLiteral(value)
 348
 0349            sb |> append valueToWrite |> ignore
 350
 0351            true
 0352        | _ -> false
 353
 354
 355    member private this.getSimpleEnumValue t name =
 0356        (this.ReferenceFullName t false) + "." + name
 357
 358    member private this.getFlags (flags : Enum) =
 0359        let t = flags.GetType()
 0360        let defaultValue = Enum.ToObject(t, 0uy) :?> Enum
 0361        Enum.GetValues(t)
 0362        |> Seq.cast<Enum>
 0363        |> Seq.except [| defaultValue |]
 0364        |> Seq.filter flags.HasFlag
 0365        |> Seq.toList
 366    member private this.getCompositeEnumValue t flags =
 0367        let allValues = flags |> this.getFlags |> HashSet
 368
 0369        allValues
 0370        |> Seq.iter(fun a ->
 0371            let decomposedValues = this.getFlags a
 0372            if decomposedValues.Length > 1 then
 0373                decomposedValues
 0374                |> Seq.filter (fun v -> not (obj.Equals(v, a)))
 0375                |> allValues.ExceptWith
 0376        )
 377
 378        let folder previous current =
 0379            if String.IsNullOrEmpty previous then
 0380                this.getSimpleEnumValue t (Enum.GetName(t, current))
 381            else
 0382                previous + " | " + this.getSimpleEnumValue t (Enum.GetName(t, current))
 383
 0384        allValues |> Seq.fold folder ""
 385
 386
 387    member private this.literalEnum (value : Enum) =
 0388        let t = value.GetType()
 0389        let name = Enum.GetName(t, value)
 390
 0391        if isNull name then
 0392            this.getCompositeEnumValue t value
 393        else
 0394            this.getSimpleEnumValue t name
 395
 396    member private this.LiteralList (vertical: bool) (sb:IndentedStringBuilder) (values: IReadOnlyList<obj>) =
 0397        this.literalList values vertical sb
 398
 399
 400    member private this.isLetterChar cat =
 0401        match cat with
 0402        | UnicodeCategory.UppercaseLetter -> true
 0403        | UnicodeCategory.LowercaseLetter -> true
 0404        | UnicodeCategory.TitlecaseLetter -> true
 0405        | UnicodeCategory.ModifierLetter -> true
 0406        | UnicodeCategory.OtherLetter -> true
 0407        | UnicodeCategory.LetterNumber -> true
 0408        | _ -> false
 409
 410
 411    member private this.isIdentifierPartCharacter ch =
 0412        if ch < 'a' then
 0413            if ch < 'A' then
 414                ch >= '0' && ch <= '9'
 415            else
 416                ch <= 'Z' || ch = '_'
 0417        elif ch <= 'z' then
 0418            true
 0419        elif ch <= '\u007F' then
 0420            false
 421        else
 0422            let cat = ch |> CharUnicodeInfo.GetUnicodeCategory
 423
 0424            if cat |> this.isLetterChar then
 0425                true
 426            else
 0427                match cat with
 0428                | UnicodeCategory.DecimalDigitNumber -> true
 0429                | UnicodeCategory.ConnectorPunctuation -> true
 0430                | UnicodeCategory.NonSpacingMark -> true
 0431                | UnicodeCategory.SpacingCombiningMark -> true
 0432                | UnicodeCategory.Format -> true
 0433                | _ -> false
 434
 435    member private this.isIdentifierStartCharacter ch =
 0436        if ch < 'a' then
 0437            if ch < 'A' then
 0438                false
 439            else
 440                ch <= 'Z' || ch = '_'
 0441        elif ch <= 'z' then
 0442            true
 0443        elif ch <= '\u007F' then
 0444            false
 445        else
 0446            ch |> CharUnicodeInfo.GetUnicodeCategory |> this.isLetterChar
 447
 448    member private this.handleScope (scope:ICollection<string>) (sb:StringBuilder) =
 0449        if scope |> Seq.isEmpty then
 0450            sb |> string
 451        else
 0452            let baseId = sb |> string
 0453            let mutable uniqueId = sb |> string
 0454            let mutable qualifier = 0
 455
 0456            while scope |> Seq.contains uniqueId do
 0457                qualifier <- qualifier + 1
 0458                uniqueId <- sprintf "%s%d" baseId qualifier
 459
 0460            uniqueId |> scope.Add
 0461            uniqueId
 462
 463    member private this.IdentifierWithScope (name:string) (scope:ICollection<string>) =
 464
 0465        let sb = StringBuilder()
 0466        let mutable partStart = 0
 467
 0468        for i = partStart to (name.Length - 1) do
 0469            if name.[i] |> this.isIdentifierPartCharacter |> not then
 0470                if partStart <> i then
 0471                    sb.Append(name.Substring(partStart, (i - partStart))) |> ignore
 472
 0473                partStart <- i + 1
 474
 0475        if partStart <> name.Length then
 0476            sb.Append(name.Substring(partStart)) |> ignore
 477
 0478        if sb.Length = 0 || sb.[0] |> this.isIdentifierStartCharacter |> not then
 0479            sb.Insert(0, "_") |> ignore
 480
 0481        let identifier = sb |> this.handleScope scope
 482
 0483        if _keywords |> Seq.contains identifier then
 0484            sprintf"``%s``" identifier
 485        else
 0486            identifier
 487
 488    member private this.buildFragment (f: MethodCallCodeFragment) (b: StringBuilder) : StringBuilder =
 3489        let args = f.Arguments |> Seq.map this.unknownLiteral |> join ", "
 490
 3491        let result = sprintf ".%s(%s)" f.Method args
 492
 1493        b.Append(result) |> ignore
 494
 1495        if isNull f.ChainedCall then
 1496            b
 497        else
 0498            this.buildFragment f.ChainedCall b
 499
 500    member private this.unknownLiteral (value: obj) =
 13501        if isNull value then
 0502            "null"
 503        else
 26504            match value with
 0505            | :? DBNull -> "null"
 0506            | :? Enum as e -> this.literalEnum e
 2507            | :? bool as e -> this.literalBoolean e
 0508            | :? byte as e -> this.literalByte e
 0509            | :? (byte array) as e -> this.literalByteArray e
 0510            | :? char as e -> this.literalChar e
 0511            | :? DateTime as e -> this.literalDateTime e
 0512            | :? DateTimeOffset as e -> this.literalDateTimeOffset e
 0513            | :? decimal as e -> this.literalDecimal e
 0514            | :? double as e -> this.literalDouble e
 0515            | :? float32 as e -> this.literalFloat32 e
 0516            | :? Guid as e -> this.literalGuid e
 1517            | :? int as e -> this.literalInt e
 0518            | :? Int64 as e -> this.literalInt64 e
 0519            | :? sbyte as e -> this.literalSByte e
 0520            | :? Int16 as e -> this.literalInt16 e
 10521            | :? string as e -> this.literalString e
 0522            | :? TimeSpan as e -> this.literalTimeSpan e
 0523            | :? UInt32 as e -> this.literalUInt32 e
 0524            | :? UInt64 as e -> this.literalUInt64 e
 0525            | :? UInt16 as e -> this.literalUInt16 e
 0526            | :? BigInteger as e -> this.literalBigInteger e
 0527            | :? (string[]) as e -> this.literalStringArray e
 0528            | :? Array as e -> this.literalArray e
 529            | _ ->
 530
 0531                let literalType = value.GetType()
 0532                let mapping = relationalTypeMappingSource.FindMapping literalType
 533
 0534                if isNull mapping then
 0535                    let t = value.GetType()
 536                    let type' =
 0537                        if t |> isNullableType then t |> unwrapNullableType
 0538                        elif t |> isOptionType then t |> unwrapOptionType
 0539                        else t
 0540                    invalidOp (type' |> DesignStrings.UnknownLiteral)
 541                else
 0542                    let builder = new IndentedStringBuilder()
 0543                    let expression = mapping.GenerateCodeLiteral(value)
 0544                    let handled = this.handleExpression expression false builder
 545
 0546                    if handled then
 0547                        builder.ToString()
 548                    else
 0549                        let args = (
 0550                                (expression.ToString()),
 0551                                (literalType.DisplayName(false))
 0552                            )
 553
 0554                        args |> DesignStrings.LiteralExpressionNotSupported |> NotSupportedException |> raise
 555
 556
 557
 558    interface ICSharpHelper with
 559        member this.Fragment (fragment: MethodCallCodeFragment) =
 1560            this.buildFragment fragment (StringBuilder()) |> string
 561
 562        member this.Identifier(name: string, scope: ICollection<string>): string =
 0563            if isNull scope then
 0564                this.IdentifierWithScope name [||]
 565            else
 0566                this.IdentifierWithScope name scope
 567
 568        member this.Lambda(properties: IReadOnlyList<string>): string =
 0569            StringBuilder()
 0570                .Append("(fun x -> ")
 0571                .Append("(")
 0572                .Append(String.Join(", ", (properties |> Seq.map(fun p -> "x." + p))))
 0573                .Append(") :> obj)") |> string
 574
 575        member this.Literal(values: obj [,]): string =
 0576            this.literalArray2D values
 577
 578        member this.Literal(value: Nullable<'T>): string =
 0579            this.unknownLiteral value
 580
 581        member this.Literal(value: bool): string =
 0582            this.literalBoolean value
 583
 584        member this.Literal(value: byte): string =
 0585            this.literalByte value
 586
 587        member this.Literal(value: char): string =
 0588            this.literalChar value
 589
 590        member this.Literal(value: DateTime): string =
 0591            this.literalDateTime value
 592
 593        member this.Literal(value: DateTimeOffset): string =
 0594            this.literalDateTimeOffset value
 595
 596        member this.Literal(value: decimal): string =
 0597            this.literalDecimal value
 598
 599        member this.Literal(value: float): string =
 0600            this.literalDouble value
 601
 602        member this.Literal(value: Enum): string =
 0603            this.literalEnum value
 604
 605        member this.Literal(value: float32): string =
 0606            this.literalFloat32 value
 607
 608        member this.Literal(value: Guid): string =
 0609            this.literalGuid value
 610
 611        member this.Literal(value: int): string =
 0612            this.literalInt value
 613
 614        member this.Literal(value: int64): string =
 0615            this.literalInt64 value
 616
 617        member this.Literal(value: sbyte): string =
 0618            this.literalSByte value
 619
 620        member this.Literal(value: int16): string =
 0621            this.literalInt16 value
 622
 623        member this.Literal(value: string): string =
 38624            this.literalString value
 625
 626        member this.Literal(value: TimeSpan) =
 0627            this.literalTimeSpan value
 628
 629        member this.Literal(value: UInt32) =
 0630            this.literalUInt32 value
 631
 632        member this.Literal(value: UInt16) =
 0633            this.literalUInt16 value
 634
 635        member this.Literal(value: UInt64) =
 0636            this.literalUInt64 value
 637
 638        member this.Literal(values: 'T [], vertical: bool): string =
 0639            this.literalList (values |> Seq.cast<obj> |> ResizeArray) vertical (IndentedStringBuilder())
 640
 641        member this.Namespace(name: string []): string =
 0642            let join (ns': string array) = String.Join(".", ns')
 643
 0644            let ns =
 0645                name
 0646                |> Array.filter(String.IsNullOrEmpty >> not)
 0647                |> Array.collect(fun n -> n.Split([|'.'|], StringSplitOptions.RemoveEmptyEntries))
 0648                |> Array.map(fun t -> (this :> ICSharpHelper).Identifier(t, null))
 0649                |> Array.filter(String.IsNullOrEmpty >> not)
 0650                |> join
 651
 0652            if String.IsNullOrEmpty ns then "_" else ns
 653
 654        member this.Reference(t: Type): string =
 1655            this.ReferenceFullName t false
 656
 657        member this.UnknownLiteral(value: obj): string =
 11658            this.unknownLiteral value
 659
 660
-
-
-
-

Methods/Properties

-.ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMappingSource)
-ReferenceFullName(System.Type,System.Boolean)
-ensureDecimalPlaces(System.String)
-literalString(System.String)
-literalBoolean(System.Boolean)
-literalByte(System.Byte)
-literalByteArray(System.Byte[])
-Invoke(System.Byte)
-literalStringArray(System.String[])
-Invoke(System.String)
-literalArray(System.Array)
-Invoke(System.Object)
-literalChar(System.Char)
-literalDateTime(System.DateTime)
-Invoke(System.DateTimeKind)
-Invoke(System.Int32)
-literalTimeSpan(System.TimeSpan)
-Invoke(System.Int32)
-literalDateTimeOffset(System.DateTimeOffset)
-Invoke(System.String)
-literalDecimal(System.Decimal)
-literalDouble(System.Double)
-literalFloat32(System.Single)
-literalGuid(System.Guid)
-literalInt(System.Int32)
-literalInt64(System.Int64)
-literalSByte(System.SByte)
-literalInt16(System.Int16)
-literalUInt32(System.UInt32)
-literalUInt64(System.UInt64)
-literalUInt16(System.UInt16)
-literalBigInteger(System.Numerics.BigInteger)
-literalList(System.Collections.Generic.IReadOnlyList`1<System.Object>,System.Boolean,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.Object)
-Invoke(System.String)
-literalArray2D(System.Object[0...,0...])
-Invoke(System.Int32)
-Invoke(System.Object)
-handleArguments(System.Collections.Generic.IEnumerable`1<b>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-handleList(System.Collections.Generic.IEnumerable`1<b>,System.Boolean,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(b)
-Invoke(System.Boolean)
-handleExpression(System.Linq.Expressions.Expression,System.Boolean,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-getSimpleEnumValue(System.Type,System.String)
-getFlags(System.Enum)
-Invoke(System.Enum)
-getCompositeEnumValue(System.Type,System.Enum)
-Invoke(System.Enum)
-Invoke(System.Enum)
-Invoke(System.String,c)
-literalEnum(System.Enum)
-LiteralList(System.Boolean,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder,System.Collections.Generic.IReadOnlyList`1<System.Object>)
-isLetterChar(System.Globalization.UnicodeCategory)
-isIdentifierPartCharacter(System.Char)
-isIdentifierStartCharacter(System.Char)
-handleScope(System.Collections.Generic.ICollection`1<System.String>,System.Text.StringBuilder)
-Invoke(System.Int32)
-Invoke(System.String)
-IdentifierWithScope(System.String,System.Collections.Generic.ICollection`1<System.String>)
-buildFragment(Microsoft.EntityFrameworkCore.Design.MethodCallCodeFragment,System.Text.StringBuilder)
-Invoke(System.Object)
-Invoke(System.String)
-unknownLiteral(System.Object)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Fragment(Microsoft.EntityFrameworkCore.Design.MethodCallCodeFragment)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Identifier(System.String,System.Collections.Generic.ICollection`1<System.String>)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Lambda(System.Collections.Generic.IReadOnlyList`1<System.String>)
-Invoke(System.String)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Object[0...,0...])
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Nullable`1<T>)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Boolean)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Byte)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Char)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.DateTime)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.DateTimeOffset)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Decimal)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Double)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Enum)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Single)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Guid)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Int32)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Int64)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.SByte)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.Int16)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.String)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.TimeSpan)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.UInt32)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.UInt16)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(System.UInt64)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Literal(a[],System.Boolean)
-Invoke(System.String[])
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Namespace(System.String[])
-Invoke(System.String)
-Invoke(System.Boolean)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(System.Boolean)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-Reference(System.Type)
-Microsoft-EntityFrameworkCore-Design-ICSharpHelper-UnknownLiteral(System.Object)
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationOperationGenerator.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationOperationGenerator.htm deleted file mode 100644 index d9d31ee..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationOperationGenerator.htm +++ /dev/null @@ -1,939 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationOperationGenerator - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationOperationGenerator
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs
Covered lines:0
Uncovered lines:223
Coverable lines:223
Total lines:740
Line coverage:0% (0 of 223)
Covered branches:3
Total branches:50
Branch coverage:6% (3 of 50)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)100%0%0
Invoke(...)220%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)480%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)220%0%0
Invoke(...)100%0%0
Invoke(...)220%0%0
Invoke(...)100%0%0
GenerateNext(...)17320%0%0
GenerateNext(...)17320%0%0
GenerateNext(...)285120%21.05%413.81
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Microsoft-EntityFrameworkCore-Migrations-Design-ICSharpMigrationOperationGenerator-Generate(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Migrations.Design
 2
 3open System
 4open System.Collections.Generic
 5open Microsoft.FSharp.Linq.NullableOperators
 6open Microsoft.EntityFrameworkCore.Migrations.Operations
 7open Microsoft.EntityFrameworkCore.Internal
 8
 9open EntityFrameworkCore.FSharp.SharedTypeExtensions
 10open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 11open EntityFrameworkCore.FSharp.Internal
 12open Microsoft.EntityFrameworkCore.Infrastructure
 13open Microsoft.EntityFrameworkCore.Migrations
 14open Microsoft.EntityFrameworkCore.Design
 15
 016type FSharpMigrationOperationGenerator (code : ICSharpHelper) =
 17
 18    let toOnedimensionalArray firstDimension (a : obj[,]) =
 019        Array.init a.Length (fun i -> if firstDimension then a.[i, 0] else a.[0, i])
 20
 21    let sanitiseName name =
 22        if FSharpUtilities.isKeyword name then sprintf "``%s``" name else name
 23
 24    let writeName nameValue sb =
 25        sb
 26            |> append "name = " |> appendLine (nameValue |> code.UnknownLiteral)
 27
 28    let writeParameter name value sb =
 29
 30        let n = sanitiseName name
 31        let v = value |> code.UnknownLiteral
 032        let fmt = sprintf ", %s = %s" n v
 33
 34        sb |> append fmt
 35
 36    let writeParameterIfTrue trueOrFalse name value sb =
 37        if trueOrFalse then
 38            sb |> writeParameter name value
 39        else
 40            sb
 41
 42    let writeOptionalParameter (name:string) value (sb:IndentedStringBuilder) =
 43        sb |> writeParameterIfTrue (value |> notNull) name (sprintf "Nullable(%s)" value)
 44
 45    let writeNullableParameterIfValue name (nullableParameter: Nullable<_>) sb =
 46
 47        if nullableParameter.HasValue then
 48            let value = nullableParameter |> code.UnknownLiteral
 049            let fmt = sprintf ", %s = Nullable(%s)" (sanitiseName name) value
 50
 51            sb |> append fmt
 52        else
 53            sb
 54
 55    let annotations (annotations: Annotation seq) (sb:IndentedStringBuilder) =
 56        annotations
 57            |> Seq.iter(fun a ->
 058                sb
 059                |> appendEmptyLine
 060                |> append ".Annotation("
 061                |> append (code.Literal a.Name)
 062                |> append ", "
 063                |> append (code.UnknownLiteral a.Value)
 064                |> append ")"
 065                |> ignore
 66            )
 67        sb
 68
 69    let oldAnnotations (annotations: Annotation seq) (sb:IndentedStringBuilder) =
 70        annotations
 71            |> Seq.iter(fun a ->
 072                sb
 073                |> appendEmptyLine
 074                |> append (sprintf ".OldAnnotation(%s, %s)" (code.Literal a.Name) (code.UnknownLiteral a.Value))
 075                |> ignore
 76            )
 77        sb
 78
 79    let generateMigrationOperation (op:MigrationOperation) (sb:IndentedStringBuilder) :IndentedStringBuilder =
 80        invalidOp ((op.GetType()) |> DesignStrings.UnknownOperation)
 81
 82    let generateAddColumnOperation (op:AddColumnOperation) (sb:IndentedStringBuilder) =
 83
 84        let isPropertyRequired =
 85            let isNullable =
 86                op.ClrType |> isOptionType ||
 87                op.ClrType |> isNullableType
 88
 89            isNullable <> op.IsNullable
 90
 91        sb
 92            |> append ".AddColumn<"
 93            |> append (op.ClrType |> unwrapOptionType |> code.Reference)
 94            |> appendLine ">("
 95            |> indent
 96            |> writeName op.Name
 97            |> writeOptionalParameter "schema" op.Schema
 98            |> writeParameter "table" op.Table
 99            |> writeOptionalParameter "type" op.ColumnType
 100            |> writeNullableParameterIfValue "unicode" op.IsUnicode
 101            |> writeNullableParameterIfValue "maxLength" op.MaxLength
 102            |> writeNullableParameterIfValue "fixedLength" op.IsFixedLength
 103            |> writeParameterIfTrue op.IsRowVersion "rowVersion" true
 104            |> writeParameter "nullable" op.IsNullable
 105            |>
 106                if not(isNull op.DefaultValueSql) then
 0107                    writeParameter "defaultValueSql" op.DefaultValueSql
 108                elif not(isNull op.ComputedColumnSql) then
 0109                    writeParameter "computedColumnSql" op.ComputedColumnSql
 110                elif not(isNull op.DefaultValue) then
 0111                    writeParameter "defaultValue" op.DefaultValue
 112                else
 0113                    id
 114            |> append ")"
 115            |> appendIfTrue (op.ClrType |> isOptionType) (sprintf ".SetValueConverter(OptionConverter<%s> ())" (op.ClrTy
 116
 117            |> annotations (op.GetAnnotations())
 118            |> unindent
 119
 120    let generateAddForeignKeyOperation (op:AddForeignKeyOperation) (sb:IndentedStringBuilder) =
 121
 122        sb
 123            |> appendLine ".AddForeignKey("
 124            |> indent
 125            |> writeName op.Name
 126            |> writeOptionalParameter "schema" op.Schema
 127            |> writeParameter "table" op.Table
 128            |> writeParameterIfTrue (op.Columns.Length = 1) "column" op.Columns.[0]
 129            |> writeParameterIfTrue (op.Columns.Length <> 1) "columns" op.Columns
 130            |> writeOptionalParameter "principalSchema" op.PrincipalSchema
 131            |> writeParameter "principalTable" op.PrincipalTable
 132            |> writeParameterIfTrue (op.PrincipalColumns.Length = 1) "principalColumn" op.PrincipalColumns.[0]
 133            |> writeParameterIfTrue (op.PrincipalColumns.Length <> 1) "principalColumns" op.PrincipalColumns
 134            |> writeParameterIfTrue (op.OnUpdate <> ReferentialAction.NoAction) "onUpdate" op.OnUpdate
 135            |> writeParameterIfTrue (op.OnDelete <> ReferentialAction.NoAction) "onDelete" op.OnDelete
 136            |> append ")"
 137            |> annotations (op.GetAnnotations())
 138            |> unindent
 139
 140    let generateAddPrimaryKeyOperation (op:AddPrimaryKeyOperation) (sb:IndentedStringBuilder) =
 141        sb
 142            |> appendLine ".AddPrimaryKey("
 143            |> indent
 144            |> writeName op.Name
 145            |> writeOptionalParameter "schema" op.Schema
 146            |> writeParameter "table" op.Table
 147            |> writeParameterIfTrue (op.Columns.Length = 1) "column" op.Columns.[0]
 148            |> writeParameterIfTrue (op.Columns.Length <> 1) "columns" op.Columns
 149            |> append ")"
 150            |> annotations (op.GetAnnotations())
 151            |> unindent
 152
 153    let generateAddUniqueConstraintOperation (op:AddUniqueConstraintOperation) (sb:IndentedStringBuilder) =
 154        sb
 155            |> appendLine ".AddUniqueConstraint("
 156            |> indent
 157            |> writeName op.Name
 158            |> writeOptionalParameter "schema" op.Schema
 159            |> writeParameter "table" op.Table
 160            |> writeParameterIfTrue (op.Columns.Length = 1) "column" op.Columns.[0]
 161            |> writeParameterIfTrue (op.Columns.Length <> 1) "columns" op.Columns
 162            |> append ")"
 163            |> annotations (op.GetAnnotations())
 164            |> unindent
 165
 166    let generateAlterColumnOperation (op:AlterColumnOperation) (sb:IndentedStringBuilder) =
 167        sb
 168            |> append ".AlterColumn<"
 169            |> append (op.ClrType |> code.Reference)
 170            |> appendLine ">("
 171            |> indent
 172            |> writeName op.Name
 173            |> writeOptionalParameter "schema" op.Schema
 174            |> writeParameter "table" op.Table
 175            |> writeOptionalParameter "type" op.ColumnType
 176            |> writeNullableParameterIfValue "unicode" op.IsUnicode
 177            |> writeNullableParameterIfValue "maxLength" op.MaxLength
 178            |> writeParameterIfTrue op.IsRowVersion "rowVersion" true
 179            |> writeParameter "nullable" op.IsNullable
 180            |>
 181                if op.DefaultValueSql |> notNull then
 0182                    writeParameter "defaultValueSql" op.DefaultValueSql
 183                elif op.ComputedColumnSql |> notNull then
 0184                    writeParameter "computedColumnSql" op.ComputedColumnSql
 185                elif op.DefaultValue |> notNull then
 0186                    writeParameter "defaultValue" op.DefaultValue
 187                else
 0188                    id
 189            |> writeParameterIfTrue (op.OldColumn.ClrType |> isNull |> not) "oldType" (sprintf "typedefof<%s>" (op.OldCo
 190            |> writeOptionalParameter "oldType" op.OldColumn.ColumnType
 191            |> writeNullableParameterIfValue "oldUnicode" op.OldColumn.IsUnicode
 192            |> writeNullableParameterIfValue "oldMaxLength" op.OldColumn.MaxLength
 193            |> writeParameterIfTrue op.OldColumn.IsRowVersion "oldRowVersion" true
 194            |> writeParameter "oldNullable" op.OldColumn.IsNullable
 195            |>
 196                if op.OldColumn.DefaultValueSql |> notNull then
 0197                    writeParameter "oldDefaultValueSql" op.OldColumn.DefaultValueSql
 198                elif op.OldColumn.ComputedColumnSql |> notNull then
 0199                    writeParameter "oldComputedColumnSql" op.OldColumn.ComputedColumnSql
 200                elif op.OldColumn.DefaultValue |> notNull then
 0201                    writeParameter "oldDefaultValue" op.OldColumn.DefaultValue
 202                else
 0203                    id
 204            |> append ")"
 205            |> appendIfTrue (op.ClrType |> isOptionType) (sprintf ".SetValueConverter(OptionConverter<%s> ())" (op.ClrTy
 206            |> annotations (op.GetAnnotations())
 207            |> oldAnnotations (op.OldColumn.GetAnnotations())
 208            |> unindent
 209
 210
 211    let generateAlterDatabaseOperation (op:AlterDatabaseOperation) (sb:IndentedStringBuilder) =
 212        sb
 213            |> appendLine ".AlterDatabase()"
 214            |> indent
 215            |> annotations (op.GetAnnotations())
 216            |> oldAnnotations (op.OldDatabase.GetAnnotations())
 217            |> unindent
 218
 219    let generateAlterSequenceOperation (op:AlterSequenceOperation) (sb:IndentedStringBuilder) =
 220        sb
 221            |> appendLine ".AlterSequence("
 222            |> indent
 223            |> writeName op.Name
 224            |> writeOptionalParameter "schema" op.Schema
 225            |> writeParameterIfTrue (op.IncrementBy <> 1) "incrementBy" op.IncrementBy
 226            |> writeNullableParameterIfValue "minValue " op.MinValue
 227            |> writeNullableParameterIfValue "maxValue " op.MaxValue
 228            |> writeParameterIfTrue op.IsCyclic "cyclic" "true"
 229            |> writeParameterIfTrue (op.OldSequence.IncrementBy <> 1) "oldIncrementBy" op.OldSequence.IncrementBy
 230            |> writeNullableParameterIfValue "oldMinValue " op.OldSequence.MinValue
 231            |> writeNullableParameterIfValue "oldMaxValue " op.OldSequence.MaxValue
 232            |> writeParameterIfTrue op.OldSequence.IsCyclic "oldCyclic" "true"
 233            |> append ")"
 234            |> annotations (op.GetAnnotations())
 235            |> oldAnnotations (op.OldSequence.GetAnnotations())
 236            |> unindent
 237
 238    let generateAlterTableOperation (op:AlterTableOperation) (sb:IndentedStringBuilder) =
 239        sb
 240            |> appendLine ".AlterTable("
 241            |> indent
 242            |> writeName op.Name
 243            |> writeOptionalParameter "schema" op.Schema
 244            |> append ")"
 245            |> annotations (op.GetAnnotations())
 246            |> oldAnnotations (op.OldTable.GetAnnotations())
 247            |> unindent
 248
 249    let generateCreateIndexOperation (op:CreateIndexOperation) (sb:IndentedStringBuilder) =
 250        sb
 251            |> appendLine ".CreateIndex("
 252            |> indent
 253            |> writeName op.Name
 254            |> writeOptionalParameter "schema" op.Schema
 255            |> writeParameter "table" op.Table
 256            |> writeParameterIfTrue (op.Columns.Length = 1) "column" op.Columns.[0]
 257            |> writeParameterIfTrue (op.Columns.Length <> 1) "columns" op.Columns
 258            |> writeParameterIfTrue op.IsUnique "unique" true
 259            |> writeOptionalParameter "filter" op.Filter
 260            |> append ")"
 261            |> annotations (op.GetAnnotations())
 262            |> unindent
 263
 264    let generateEnsureSchemaOperation (op:EnsureSchemaOperation) (sb:IndentedStringBuilder) =
 265        sb
 266            |> appendLine ".EnsureSchema("
 267            |> indent
 268            |> writeName op.Name
 269            |> append ")"
 270            |> annotations (op.GetAnnotations())
 271            |> unindent
 272
 273    let generateCreateSequenceOperation (op:CreateSequenceOperation) (sb:IndentedStringBuilder) =
 274        sb
 275            |> append ".CreateSequence"
 276            |>
 277                if op.ClrType <> typedefof<Int64> then
 0278                    append (sprintf "<%s>" (op.ClrType |> code.Reference))
 279                else
 0280                    id
 281            |> appendLine "("
 282            |> indent
 283            |> writeName op.Name
 284            |> writeOptionalParameter "schema" op.Schema
 285            |> writeParameterIfTrue (op.StartValue <> 1L) "startValue" op.StartValue
 286            |> writeParameterIfTrue (op.IncrementBy <> 1) "incrementBy" op.IncrementBy
 287            |> writeNullableParameterIfValue "minValue " op.MinValue
 288            |> writeNullableParameterIfValue "maxValue " op.MaxValue
 289            |> writeParameterIfTrue op.IsCyclic "cyclic" "true"
 290            |> append ")"
 291            |> annotations (op.GetAnnotations())
 292            |> unindent
 293
 294
 295    let generateCreateTableOperation (op:CreateTableOperation) (sb:IndentedStringBuilder) =
 296
 297        let map = Dictionary<string, string>()
 298
 299        let writeColumn (c:AddColumnOperation) =
 0300            let propertyName = c.Name |> code.Identifier
 0301            map.Add(c.Name, propertyName)
 302
 0303            sb
 0304                |> append propertyName
 0305                |> append " = table.Column<"
 0306                |> append (code.Reference c.ClrType)
 0307                |> append ">("
 0308                |> append "nullable = " |> append (c.IsNullable |> code.Literal)
 0309                |> writeParameterIfTrue (c.Name <> propertyName) "name" c.Name
 0310                |> writeParameterIfTrue (c.ColumnType |> notNull) "type" c.ColumnType
 0311                |> writeNullableParameterIfValue "unicode" c.IsUnicode
 0312                |> writeNullableParameterIfValue "maxLength" c.MaxLength
 0313                |> writeParameterIfTrue (c.IsRowVersion) "rowVersion" c.IsRowVersion
 0314                |>
 0315                    if c.DefaultValueSql |> notNull then
 0316                        append (sprintf ", defaultValueSql = %s" (c.DefaultValueSql |> code.Literal))
 0317                    elif c.ComputedColumnSql |> notNull then
 0318                        append (sprintf ", computedColumnSql = %s" (c.ComputedColumnSql |> code.Literal))
 0319                    elif c.DefaultValue |> notNull then
 0320                        append (sprintf ", defaultValue = %s" (c.DefaultValue |> code.UnknownLiteral))
 0321                    else
 0322                        id
 0323                |> append ")"
 0324                |> appendIfTrue (c.ClrType |> isOptionType) (sprintf ".SetValueConverter(OptionConverter<%s> ())" (c.Clr
 0325                |> indent
 0326                |> annotations (c.GetAnnotations())
 0327                |> unindent
 0328                |> appendEmptyLine
 0329                |> ignore
 330
 331        let writeColumns sb =
 332
 0333            sb
 0334                |> append "," |> appendLine "columns = (fun table -> "
 0335                |> appendLine "{"
 0336                |> indent
 0337                |> ignore
 338
 0339            op.Columns |> Seq.filter(notNull) |> Seq.iter(writeColumn)
 340
 0341            sb
 0342                |> unindent
 0343                |> appendLine "})"
 344
 345        let writeUniqueConstraint (uc:AddUniqueConstraintOperation) =
 0346            sb
 0347                |> append "table.UniqueConstraint("
 0348                |> append (uc.Name |> code.Literal)
 0349                |> append ", "
 0350                |> append (uc.Columns |> Seq.map(fun c -> map.[c]) |> Seq.toList |> code.Lambda)
 0351                |> append ")"
 0352                |> indent
 0353                |> annotations (op.PrimaryKey.GetAnnotations())
 0354                |> appendLine " |> ignore"
 0355                |> unindent
 0356                |> ignore
 357
 358        let writeForeignKeyConstraint (fk:AddForeignKeyOperation) =
 0359            sb
 0360                |> appendLine "table.ForeignKey("
 0361                |> indent
 0362
 0363                |> append "name = " |> append (fk.Name |> code.Literal) |> appendLine ","
 0364                |> append (if fk.Columns.Length = 1 then "column = " else "columns = ")
 0365                |> append (fk.Columns |> Seq.map(fun c -> map.[c]) |> Seq.toList |> code.Lambda)
 0366                |> writeParameterIfTrue (fk.PrincipalSchema |> notNull) "principalSchema" fk.PrincipalSchema
 0367                |> writeParameter "principalTable" fk.PrincipalTable
 0368                |> writeParameterIfTrue (fk.PrincipalColumns.Length = 1) "principalColumn" fk.PrincipalColumns.[0]
 0369                |> writeParameterIfTrue (fk.PrincipalColumns.Length <> 1) "principalColumns" fk.PrincipalColumns
 0370                |> writeParameterIfTrue (fk.OnUpdate <> ReferentialAction.NoAction) "onUpdate" fk.OnUpdate
 0371                |> writeParameterIfTrue (fk.OnDelete <> ReferentialAction.NoAction) "onDelete" fk.OnDelete
 0372
 0373                |> append ")"
 0374                |> annotations (fk.GetAnnotations())
 0375                |> unindent
 0376                |> appendLine " |> ignore"
 0377                |> appendEmptyLine
 0378                |> ignore
 0379            ()
 380
 381        let writeConstraints sb =
 0382            sb |> append "," |> appendLine "constraints ="
 0383            |> indent
 0384            |> appendLine "(fun table -> "
 0385            |> indent
 0386            |> ignore
 387
 0388            if op.PrimaryKey |> notNull then
 0389                sb
 0390                    |> append "table.PrimaryKey("
 0391                    |> append (op.PrimaryKey.Name |> code.Literal)
 0392                    |> append ", "
 0393                    |> append (op.PrimaryKey.Columns |> Seq.map(fun c -> map.[c]) |> Seq.toList |> code.Lambda)
 0394                    |> appendLine ") |> ignore"
 0395                    |> indent
 0396                    |> annotations (op.PrimaryKey.GetAnnotations())
 0397                    |> unindent
 0398                    |> ignore
 399
 0400            op.UniqueConstraints |> Seq.iter(writeUniqueConstraint)
 0401            op.ForeignKeys |> Seq.iter(writeForeignKeyConstraint)
 402
 0403            sb
 0404                |> unindent
 0405                |> appendLine ") "
 406
 407        sb
 408            |> appendLine ".CreateTable("
 409            |> indent
 410            |> writeName op.Name
 411            |> writeOptionalParameter "schema" op.Schema
 412            |> writeColumns
 413            |> writeConstraints
 414            |> unindent
 415            |> append ")"
 416            |> annotations (op.GetAnnotations())
 417            |> unindent
 418
 419    let generateDropColumnOperation (op:DropColumnOperation) (sb:IndentedStringBuilder) =
 420        sb
 421            |> appendLine ".DropColumn("
 422            |> indent
 423            |> writeName op.Name
 424            |> writeOptionalParameter "schema" op.Schema
 425            |> writeParameter "table" op.Table
 426            |> append ")"
 427            |> annotations (op.GetAnnotations())
 428            |> unindent
 429
 430    let generateDropForeignKeyOperation (op:DropForeignKeyOperation) (sb:IndentedStringBuilder) =
 431        sb
 432            |> appendLine ".DropForeignKey("
 433            |> indent
 434            |> writeName op.Name
 435            |> writeOptionalParameter "schema" op.Schema
 436            |> writeParameter "table" op.Table
 437            |> append ")"
 438            |> annotations (op.GetAnnotations())
 439            |> unindent
 440
 441    let generateDropIndexOperation (op:DropIndexOperation) (sb:IndentedStringBuilder) =
 442        sb
 443            |> appendLine ".DropIndex("
 444            |> indent
 445            |> writeName op.Name
 446            |> writeOptionalParameter "schema" op.Schema
 447            |> writeParameter "table" op.Table
 448            |> append ")"
 449            |> annotations (op.GetAnnotations())
 450            |> unindent
 451
 452    let generateDropPrimaryKeyOperation (op:DropPrimaryKeyOperation) (sb:IndentedStringBuilder) =
 453        sb
 454            |> appendLine ".DropPrimaryKey("
 455            |> indent
 456            |> writeName op.Name
 457            |> writeOptionalParameter "schema" op.Schema
 458            |> writeParameter "table" op.Table
 459            |> append ")"
 460            |> annotations (op.GetAnnotations())
 461            |> unindent
 462
 463    let generateDropSchemaOperation (op:DropSchemaOperation) (sb:IndentedStringBuilder) =
 464        sb
 465            |> appendLine ".DropSchema("
 466            |> indent
 467            |> writeName op.Name
 468            |> append ")"
 469            |> annotations (op.GetAnnotations())
 470            |> unindent
 471
 472    let generateDropSequenceOperation (op:DropSequenceOperation) (sb:IndentedStringBuilder) =
 473        sb
 474            |> appendLine ".DropSequence("
 475            |> indent
 476            |> writeName op.Name
 477            |> writeOptionalParameter "schema" op.Schema
 478            |> append ")"
 479            |> annotations (op.GetAnnotations())
 480            |> unindent
 481
 482    let generateDropTableOperation (op:DropTableOperation) (sb:IndentedStringBuilder) =
 483        sb
 484            |> appendLine ".DropTable("
 485            |> indent
 486            |> writeName op.Name
 487            |> writeOptionalParameter "schema" op.Schema
 488            |> append ")"
 489            |> annotations (op.GetAnnotations())
 490            |> unindent
 491
 492    let generateDropUniqueConstraintOperation (op:DropUniqueConstraintOperation) (sb:IndentedStringBuilder) =
 493        sb
 494            |> appendLine ".DropUniqueConstraint("
 495            |> indent
 496            |> writeName op.Name
 497            |> writeOptionalParameter "schema" op.Schema
 498            |> writeParameter "table" op.Table
 499            |> append ")"
 500            |> annotations (op.GetAnnotations())
 501            |> unindent
 502
 503    let generateRenameColumnOperation (op:RenameColumnOperation) (sb:IndentedStringBuilder) =
 504        sb
 505            |> appendLine ".RenameColumn("
 506            |> indent
 507            |> writeName op.Name
 508            |> writeOptionalParameter "schema" op.Schema
 509            |> writeParameter "table" op.Table
 510            |> writeParameter "newName" op.NewName
 511            |> append ")"
 512            |> annotations (op.GetAnnotations())
 513            |> unindent
 514
 515    let generateRenameIndexOperation (op:RenameIndexOperation) (sb:IndentedStringBuilder) =
 516        sb
 517            |> appendLine ".RenameIndex("
 518            |> indent
 519            |> writeName op.Name
 520            |> writeOptionalParameter "schema" op.Schema
 521            |> writeParameter "table" op.Table
 522            |> writeParameter "newName" op.NewName
 523            |> append ")"
 524            |> annotations (op.GetAnnotations())
 525            |> unindent
 526
 527    let generateRenameSequenceOperation (op:RenameSequenceOperation) (sb:IndentedStringBuilder) =
 528        sb
 529            |> appendLine ".RenameSequence("
 530            |> indent
 531            |> writeName op.Name
 532            |> writeOptionalParameter "schema" op.Schema
 533            |> writeParameter "newName" op.NewName
 534            |> writeParameter "newSchema" op.NewSchema
 535            |> append ")"
 536            |> annotations (op.GetAnnotations())
 537            |> unindent
 538
 539    let generateRenameTableOperation (op:RenameTableOperation) (sb:IndentedStringBuilder) =
 540        sb
 541            |> appendLine ".RenameTable("
 542            |> indent
 543            |> writeName op.Name
 544            |> writeOptionalParameter "schema" op.Schema
 545            |> writeParameter "newName" op.NewName
 546            |> writeParameter "newSchema" op.NewSchema
 547            |> append ")"
 548            |> annotations (op.GetAnnotations())
 549            |> unindent
 550
 551    let generateRestartSequenceOperation (op:RestartSequenceOperation) (sb:IndentedStringBuilder) =
 552        sb
 553            |> appendLine ".RestartSequence("
 554            |> indent
 555            |> writeName op.Name
 556            |> writeOptionalParameter "schema" op.Schema
 557            |> writeParameter "startValue" op.StartValue
 558            |> append ")"
 559            |> annotations (op.GetAnnotations())
 560            |> unindent
 561
 562    let generateSqlOperation (op:SqlOperation) (sb:IndentedStringBuilder) =
 563        sb
 564            |> appendLine (sprintf ".Sql(%s)" (op.Sql |> code.Literal))
 565            |> indent
 566            |> annotations (op.GetAnnotations())
 567            |> unindent
 568
 569    let generateInsertDataOperation (op:InsertDataOperation) (sb:IndentedStringBuilder) =
 570
 571        let parameters =
 572            seq {
 0573                if notNull op.Schema then
 0574                    yield sprintf "schema = %s, " (op.Schema |> code.Literal)
 575
 0576                yield sprintf "table = %s, " (op.Table |> code.Literal)
 577
 0578                if op.Columns.Length = 1 then
 0579                    yield sprintf "column = %s, " (op.Columns.[0] |> code.Literal)
 580                else
 0581                    yield sprintf "columns = %s, " (op.Columns |> code.Literal)
 582
 0583                let length0 = op.Values.GetLength(0)
 0584                let length1 = op.Values.GetLength(1)
 585
 0586                if length0 = 1 && length1 = 1 then
 0587                    yield sprintf "value = %s" (op.Values.[0,0] |> code.UnknownLiteral)
 0588                elif length0 = 1 then
 0589                    yield sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal)
 0590                elif length1 = 1 then
 0591                    let arr = op.Values |> toOnedimensionalArray true
 0592                    let lines = code.Literal(arr, true)
 0593                    yield sprintf "values = %s" lines
 594                else
 0595                    yield sprintf "values = %s" (op.Values |> code.Literal)
 596            }
 597
 598        sb
 599            |> appendLine ".InsertData("
 600            |> indent
 601            |> appendLines parameters false
 602            |> unindent
 603            |> appendLine ")"
 604
 605    let generateDeleteDataOperation (op:DeleteDataOperation) (sb:IndentedStringBuilder) =
 606        let parameters =
 607            seq {
 0608                if notNull op.Schema then
 0609                    yield sprintf "schema = %s, " (op.Schema |> code.Literal)
 610
 0611                yield sprintf "table = %s, " (op.Table |> code.Literal)
 612
 0613                if op.KeyColumns.Length = 1 then
 0614                    yield sprintf "keyColumn = %s, " (op.KeyColumns.[0] |> code.Literal)
 615                else
 0616                    yield sprintf "keyColumns = %s, " (op.KeyColumns |> code.Literal)
 617
 0618                let length0 = op.KeyValues.GetLength(0)
 0619                let length1 = op.KeyValues.GetLength(1)
 620
 0621                if length0 = 1 && length1 = 1 then
 0622                    yield sprintf "keyValue = %s" (op.KeyValues.[0,0] |> code.UnknownLiteral)
 0623                elif length0 = 1 then
 0624                    yield sprintf "keyValues = %s" (op.KeyValues |> toOnedimensionalArray false |> code.Literal)
 0625                elif length1 = 1 then
 0626                    let arr = op.KeyValues |> toOnedimensionalArray true
 0627                    let lines = code.Literal(arr, true)
 0628                    yield sprintf "keyValues = %s" lines
 629                else
 0630                    yield sprintf "keyValues = %s" (op.KeyValues |> code.Literal)
 631            }
 632
 633        sb
 634            |> appendLine ".DeleteData("
 635            |> indent
 636            |> appendLines parameters false
 637            |> unindent
 638            |> appendLine ")"
 639
 640    let generateUpdateDataOperation (op:UpdateDataOperation) (sb:IndentedStringBuilder) =
 641        let parameters =
 642            seq {
 0643                if notNull op.Schema then
 0644                    yield sprintf "schema = %s, " (op.Schema |> code.Literal)
 645
 0646                yield sprintf "table = %s, " (op.Table |> code.Literal)
 647
 0648                if op.KeyColumns.Length = 1 then
 0649                    yield sprintf "keyColumn = %s, " (op.KeyColumns.[0] |> code.Literal)
 650                else
 0651                    yield sprintf "keyColumns = %s, " (op.KeyColumns |> code.Literal)
 652
 0653                let length0 = op.KeyValues.GetLength(0)
 0654                let length1 = op.KeyValues.GetLength(1)
 655
 0656                if length0 = 1 && length1 = 1 then
 0657                    yield sprintf "keyValue = %s" (op.KeyValues.[0,0] |> code.UnknownLiteral)
 0658                elif length0 = 1 then
 0659                    yield sprintf "keyValues = %s" (op.KeyValues |> toOnedimensionalArray false |> code.Literal)
 0660                elif length1 = 1 then
 0661                    let arr = op.KeyValues |> toOnedimensionalArray true
 0662                    let lines = code.Literal(arr, true)
 0663                    yield sprintf "keyValues = %s" lines
 664                else
 0665                    yield sprintf "keyValues = %s" (op.KeyValues |> code.Literal)
 666
 0667                if op.Columns.Length = 1 then
 0668                    yield sprintf "column = %s, " (op.Columns.[0] |> code.Literal)
 669                else
 0670                    yield sprintf "columns = %s, " (op.Columns |> code.Literal)
 671
 0672                let length0 = op.Values.GetLength(0)
 0673                let length1 = op.Values.GetLength(1)
 674
 0675                if length0 = 1 && length1 = 1 then
 0676                    yield sprintf "value = %s" (op.Values.[0,0] |> code.UnknownLiteral)
 0677                elif length0 = 1 then
 0678                    yield sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal)
 0679                elif length1 = 1 then
 0680                    let arr = op.Values |> toOnedimensionalArray true
 0681                    let lines = code.Literal(arr, true)
 0682                    yield sprintf "values = %s" lines
 683                else
 0684                    yield sprintf "values = %s" (op.Values |> code.Literal)
 685            }
 686
 687        sb
 688            |> appendLine ".UpdateData("
 689            |> indent
 690            |> appendLines parameters false
 691            |> unindent
 692            |> appendLine ")"
 693
 694    let generateOperation (op:MigrationOperation) =
 695        match op with
 0696        | :? AddColumnOperation as op' -> op' |> generateAddColumnOperation
 0697        | :? AddForeignKeyOperation as op' -> op' |> generateAddForeignKeyOperation
 0698        | :? AddPrimaryKeyOperation as op' -> op' |> generateAddPrimaryKeyOperation
 0699        | :? AddUniqueConstraintOperation as op' -> op' |> generateAddUniqueConstraintOperation
 0700        | :? AlterColumnOperation as op' -> op' |> generateAlterColumnOperation
 0701        | :? AlterDatabaseOperation as op' -> op' |> generateAlterDatabaseOperation
 0702        | :? AlterSequenceOperation as op' -> op' |> generateAlterSequenceOperation
 0703        | :? AlterTableOperation as op' -> op' |> generateAlterTableOperation
 0704        | :? CreateIndexOperation as op' -> op' |> generateCreateIndexOperation
 0705        | :? EnsureSchemaOperation as op' -> op' |> generateEnsureSchemaOperation
 0706        | :? CreateSequenceOperation as op' -> op' |> generateCreateSequenceOperation
 0707        | :? CreateTableOperation as op' -> op' |> generateCreateTableOperation
 0708        | :? DropColumnOperation as op' -> op' |> generateDropColumnOperation
 0709        | :? DropForeignKeyOperation as op' -> op' |> generateDropForeignKeyOperation
 0710        | :? DropIndexOperation as op' -> op' |> generateDropIndexOperation
 0711        | :? DropPrimaryKeyOperation as op' -> op' |> generateDropPrimaryKeyOperation
 0712        | :? DropSchemaOperation as op' -> op' |> generateDropSchemaOperation
 0713        | :? DropSequenceOperation as op' -> op' |> generateDropSequenceOperation
 0714        | :? DropTableOperation as op' -> op' |> generateDropTableOperation
 0715        | :? DropUniqueConstraintOperation as op' -> op' |> generateDropUniqueConstraintOperation
 0716        | :? RenameColumnOperation as op' -> op' |> generateRenameColumnOperation
 0717        | :? RenameIndexOperation as op' -> op' |> generateRenameIndexOperation
 0718        | :? RenameSequenceOperation as op' -> op' |> generateRenameSequenceOperation
 0719        | :? RenameTableOperation as op' -> op' |> generateRenameTableOperation
 0720        | :? RestartSequenceOperation as op' -> op' |> generateRestartSequenceOperation
 0721        | :? SqlOperation as op' -> op' |> generateSqlOperation
 0722        | :? InsertDataOperation as op' -> op' |> generateInsertDataOperation
 0723        | :? DeleteDataOperation as op' -> op' |> generateDeleteDataOperation
 0724        | :? UpdateDataOperation as op' -> op' |> generateUpdateDataOperation
 0725        | _ -> op |> generateMigrationOperation // The failure case
 726
 727    let generate (builderName:string) (operations: MigrationOperation seq) (sb:IndentedStringBuilder) =
 728        operations
 729            |> Seq.iter(fun op ->
 0730                sb
 0731                    |> append builderName
 0732                    |> generateOperation op
 0733                    |> appendLine " |> ignore"
 0734                    |> appendEmptyLine
 0735                    |> ignore
 736            )
 737
 738    interface Microsoft.EntityFrameworkCore.Migrations.Design.ICSharpMigrationOperationGenerator with
 739        member this.Generate(builderName, operations, builder) =
 0740            generate builderName operations builder
-
-
-
-

Methods/Properties

-.ctor(Microsoft.EntityFrameworkCore.Design.ICSharpHelper)
-Invoke(System.Int32)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.Annotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.Annotation)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddColumnOperation)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddColumnOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddUniqueConstraintOperation)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddForeignKeyOperation)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.String)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Microsoft-EntityFrameworkCore-Migrations-Design-ICSharpMigrationOperationGenerator-Generate(System.String,System.Collections.Generic.IReadOnlyList`1<Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.String,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.Collections.Generic.IReadOnlyList`1<Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation>)
-Invoke(System.String)
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsGenerator.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsGenerator.htm deleted file mode 100644 index 5ac5519..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsGenerator.htm +++ /dev/null @@ -1,539 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGenerator - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGenerator
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs
Covered lines:0
Uncovered lines:104
Coverable lines:104
Total lines:370
Line coverage:0% (0 of 104)
Covered branches:0
Total branches:22
Branch coverage:0% (0 of 22)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)100%0%0
Invoke(...)580%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)220%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
GenerateNext(...)12160%0%0
Close()1100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)520%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
GenerateNext(...)1200%0%0
GenerateNext(...)1120%0%0
GenerateMigration(...)100%0%0
GenerateMetadata(...)220%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
GenerateSnapshot(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Migrations.Design
 2
 3open System
 4open Microsoft.EntityFrameworkCore.Metadata
 5open Microsoft.EntityFrameworkCore.Metadata.Internal
 6open Microsoft.EntityFrameworkCore.Migrations.Operations
 7open Microsoft.EntityFrameworkCore.Internal
 8
 9open EntityFrameworkCore.FSharp.EntityFrameworkExtensions
 10open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 11open Microsoft.EntityFrameworkCore.Infrastructure
 12open Microsoft.EntityFrameworkCore.Migrations.Design
 13open Microsoft.EntityFrameworkCore.Storage
 14open Microsoft.EntityFrameworkCore.Storage.ValueConversion
 15open Microsoft.EntityFrameworkCore.ChangeTracking.Internal
 16open EntityFrameworkCore.FSharp.SharedTypeExtensions
 17
 018type FSharpMigrationsGenerator(dependencies, fSharpDependencies : FSharpMigrationsGeneratorDependencies) =
 019    inherit MigrationsCodeGenerator(dependencies)
 20
 021    let code = fSharpDependencies.FSharpHelper
 022    let generator = fSharpDependencies.FSharpMigrationOperationGenerator
 023    let snapshot = fSharpDependencies.FSharpSnapshotGenerator
 24
 25    let getColumnNamespaces (columnOperation: ColumnOperation) =
 26        let ns = getNamespaces columnOperation.ClrType
 27
 28        let ns' =
 29            if columnOperation :? AlterColumnOperation then
 30                (columnOperation :?> AlterColumnOperation).OldColumn.ClrType |> getNamespaces
 31            else
 32                Seq.empty<String>
 33
 34        ns |> Seq.append ns'
 35
 36    let findValueConverter (property: IProperty) =
 37        let coreType =
 38            property.[CoreAnnotationNames.TypeMapping] :?> CoreTypeMapping
 39
 40        if isNull coreType then
 41            dependencies.RelationalTypeMappingSource.FindMapping(property).Converter
 42        else
 43            coreType.Converter
 44
 45    let getAnnotationNamespaces (items: IAnnotatable seq) =
 46        let ignoredAnnotations =
 47            [
 48                CoreAnnotationNames.NavigationCandidates
 49                CoreAnnotationNames.AmbiguousNavigations
 50                CoreAnnotationNames.InverseNavigations
 51                ChangeDetector.SkipDetectChangesAnnotation
 52                CoreAnnotationNames.OwnedTypes
 53                CoreAnnotationNames.ChangeTrackingStrategy
 54                CoreAnnotationNames.BeforeSaveBehavior
 55                CoreAnnotationNames.AfterSaveBehavior
 56                CoreAnnotationNames.TypeMapping
 57                CoreAnnotationNames.ValueComparer
 58                CoreAnnotationNames.KeyValueComparer
 59                CoreAnnotationNames.StructuralValueComparer
 60                CoreAnnotationNames.ConstructorBinding
 61                CoreAnnotationNames.NavigationAccessMode
 62                CoreAnnotationNames.PropertyAccessMode
 63                CoreAnnotationNames.ProviderClrType
 64                CoreAnnotationNames.ValueConverter
 65                CoreAnnotationNames.ValueGeneratorFactory
 66                CoreAnnotationNames.DefiningQuery
 67                CoreAnnotationNames.QueryFilter
 68                RelationalAnnotationNames.CheckConstraints
 69            ]
 70
 71        let ignoreAnnotationTypes =
 72            [
 73                RelationalAnnotationNames.DbFunction
 74                RelationalAnnotationNames.SequencePrefix
 75            ]
 76
 77        let getProviderType (annotatable: IAnnotatable) (t: Type) =
 078            match annotatable with
 79            | :? IProperty ->
 080                let p = annotatable :?> IProperty
 081                if (t |> unwrapNullableType) = (p.ClrType |> unwrapNullableType) then
 082                    let valueConverter = findValueConverter p
 83
 084                    if isNull valueConverter then
 085                        t
 86                    else
 087                        valueConverter.ProviderClrType
 88                else
 089                    t
 090            | _ -> t
 91
 92        items
 93            |> Seq.collect (fun i ->
 094                i.GetAnnotations()
 095                |> Seq.map(fun a -> {| Annotatable = i; Annotation = a|}))
 096            |> Seq.filter (fun a -> a.Annotation.Value |> notNull)
 097            |> Seq.filter (fun a -> (ignoredAnnotations |> List.contains a.Annotation.Name) |> not)
 98            |> Seq.filter (fun a ->
 99                ignoreAnnotationTypes
 0100                |> Seq.exists (fun p -> a.Annotation.Name.StartsWith(p, StringComparison.Ordinal))
 0101                |> not)
 0102            |> Seq.collect (fun a -> getProviderType a.Annotatable (a.Annotation.Value.GetType()) |> getNamespaces)
 103            |> Seq.toList
 104
 105    let getAnnotatables (ops: MigrationOperation seq) : IAnnotatable seq =
 106
 0107        let list = ops |> Seq.map toAnnotatable |> ResizeArray
 108
 109        ops
 0110            |> Seq.filter(fun o -> o :? CreateTableOperation)
 0111            |> Seq.map(fun o -> o :?> CreateTableOperation)
 112            |> Seq.iter(fun c ->
 0113                c.Columns |> Seq.map(fun o -> o :> IAnnotatable) |> list.AddRange
 114
 0115                if c.PrimaryKey |> notNull then
 0116                    (c.PrimaryKey :> IAnnotatable) |> list.Add
 117
 0118                c.UniqueConstraints |> Seq.map(fun o -> o :> IAnnotatable) |> list.AddRange
 0119                c.ForeignKeys |> Seq.map(fun o -> o :> IAnnotatable) |> list.AddRange
 120                )
 121
 122        list |> Seq.cast
 123
 124    let getAnnotatablesByModel (model : IModel) =
 125
 126        let e =
 127            (model.GetEntityTypes())
 128            |> Seq.collect (fun e ->
 129
 0130                (toAnnotatable e)
 0131                ::  (e.GetProperties() |> Seq.map toAnnotatable |> Seq.toList)
 0132                @  (e.GetKeys() |> Seq.map toAnnotatable |> Seq.toList)
 0133                @  (e.GetForeignKeys() |> Seq.map toAnnotatable |> Seq.toList)
 0134                @  (e.GetIndexes() |> Seq.map toAnnotatable |> Seq.toList)
 135                )
 136            |> Seq.toList
 137
 138        (toAnnotatable model) :: e
 139
 140
 141    let getOperationNamespaces (ops: MigrationOperation seq) =
 142        let columnOperations =
 143            ops
 0144                |> Seq.filter(fun o -> o :? ColumnOperation)
 0145                |> Seq.map(fun o -> o :?> ColumnOperation)
 0146                |> Seq.collect(getColumnNamespaces)
 147
 148        let columnsInCreateTableOperations =
 149            ops
 0150                 |> Seq.filter(fun o -> o :? CreateTableOperation)
 0151                 |> Seq.map(fun o -> o :?> CreateTableOperation)
 0152                 |> Seq.collect(fun o -> o.Columns)
 0153                 |> Seq.collect(getColumnNamespaces)
 154
 155        let insertUpdateDeleteNamespaces =
 156            let getDataNamespaces (values: obj[,]) =
 0157                seq {
 0158                    for row in 0..values.GetLength(0) do
 0159                        for col in 0..values.GetLength(1) do
 0160                            let value = values.[row, col]
 0161                            if isNull value |> not then
 0162                                for ns' in value.GetType().GetNamespaces() do
 0163                                    ns'
 0164                }
 165
 166            let insert =
 167                ops
 0168                |> Seq.filter(fun o -> o :? InsertDataOperation)
 0169                |> Seq.map(fun o -> (o :?> InsertDataOperation).Values)
 170
 171            let update =
 172                ops
 0173                |> Seq.filter(fun o -> o :? UpdateDataOperation)
 174                |> Seq.collect(fun o ->
 0175                    let o' = (o :?> UpdateDataOperation)
 0176                    [| o'.KeyValues; o'.Values|])
 177
 178            let delete =
 179                ops
 0180                |> Seq.filter(fun o -> o :? DeleteDataOperation)
 0181                |> Seq.map(fun o -> (o :?> DeleteDataOperation).KeyValues)
 182
 183            insert
 184            |> Seq.append update
 185            |> Seq.append delete
 0186            |> Seq.collect (fun o -> getDataNamespaces o)
 187
 188        let annotatables =
 189            ops
 190            |> getAnnotatables
 191            |> getAnnotationNamespaces
 192
 193        columnOperations
 194        |> Seq.append columnsInCreateTableOperations
 195        |> Seq.append insertUpdateDeleteNamespaces
 196        |> Seq.append annotatables
 197
 198    let getModelNamespaces (model: IModel) =
 199        let namespaces =
 200            model.GetEntityTypes()
 201            |> Seq.collect (fun e ->
 0202                e.AsEntityType().GetDeclaredProperties()
 0203                |> Seq.collect (fun p ->
 0204                                    let converter = findValueConverter p
 0205                                    let ns =
 0206                                        if  converter |> isNull ||
 0207                                            converter.ProviderClrType |> isNull then
 0208                                            p.ClrType
 0209                                        else
 0210                                            converter.ProviderClrType
 0211                                    getNamespaces ns))
 212            |> Seq.toList
 213
 0214        let annotationNamespaces = model |> getAnnotatablesByModel |> getAnnotationNamespaces
 215
 216        namespaces @ annotationNamespaces
 217
 218    let writeCreateTableType (sb: IndentedStringBuilder) (op:CreateTableOperation) =
 219        sb
 220            |> appendEmptyLine
 221            |> append "type private " |> append op.Name |> appendLine "Table = {"
 222            |> indent
 0223            |> appendLines (op.Columns |> Seq.map (fun c -> sprintf "%s: OperationBuilder<AddColumnOperation>" c.Name)) 
 224            |> unindent
 225            |> appendLine "}"
 226            |> ignore
 227
 228    let createTypesForOperations (operations: MigrationOperation seq) (sb: IndentedStringBuilder) =
 229        operations
 0230            |> Seq.filter(fun op -> (op :? CreateTableOperation))
 0231            |> Seq.map(fun op -> (op :?> CreateTableOperation))
 0232            |> Seq.iter(fun op -> op |> writeCreateTableType sb)
 233        sb
 234
 235    let getAllNamespaces (operations: MigrationOperation seq) =
 236        let defaultNamespaces =
 0237            seq {
 0238                "System"
 0239                "System.Collections.Generic"
 0240                "Microsoft.EntityFrameworkCore"
 0241                "Microsoft.EntityFrameworkCore.Infrastructure"
 0242                "Microsoft.EntityFrameworkCore.Metadata"
 0243                "Microsoft.EntityFrameworkCore.Migrations"
 0244                "Microsoft.EntityFrameworkCore.Migrations.Operations"
 0245                "Microsoft.EntityFrameworkCore.Migrations.Operations.Builders"
 0246                "Microsoft.EntityFrameworkCore.Storage.ValueConversion"
 0247            }
 248
 249        let allOperationNamespaces = operations |> getOperationNamespaces
 250
 251        let namespaces =
 252            allOperationNamespaces
 253            |> Seq.append defaultNamespaces
 254            |> Seq.toList
 255            |> sortNamespaces
 256            |> Seq.distinct
 257
 258        namespaces
 259
 260    let generateMigration (migrationNamespace) (migrationName) (migrationId: string) (contextType:Type) (upOperations) (
 261        let sb = IndentedStringBuilder()
 262
 263        let allOperations =  (upOperations |> Seq.append downOperations)
 264        let namespaces = allOperations |> getAllNamespaces |> Seq.append [contextType.Namespace]
 265
 266        sb
 267        |> appendAutoGeneratedTag
 268        |> append "namespace " |> appendLine (code.Namespace [|migrationNamespace|])
 269        |> appendEmptyLine
 270        |> writeNamespaces namespaces
 271        |> appendEmptyLine
 272        |> createTypesForOperations allOperations // This will eventually become redundant with anon record types
 273        |> appendEmptyLine
 274        |> append "[<DbContext(typeof<" |> append (contextType |> code.Reference) |> appendLine ">)>]"
 275        |> append "[<Migration(" |> append (migrationId |> code.Literal) |> appendLine ")>]"
 276        |> append "type " |> append (migrationName |> code.Identifier) |> appendLine "() ="
 277        |> indent |> appendLine "inherit Migration()"
 278        |> appendEmptyLine
 279        |> appendLine "override this.Up(migrationBuilder:MigrationBuilder) ="
 280        |> indent |> ignore
 281
 282        generator.Generate("migrationBuilder", upOperations, sb)
 283
 284        sb
 285        |> appendEmptyLine
 286        |> unindent |> appendLine "override this.Down(migrationBuilder:MigrationBuilder) ="
 287        |> indent |> ignore
 288
 289        generator.Generate("migrationBuilder", downOperations, sb)
 290
 291        sb
 292        |> unindent
 293        |> appendEmptyLine
 294        |> appendLine "override this.BuildTargetModel(modelBuilder: ModelBuilder) ="
 295        |> indent
 296        |> ignore
 297
 298        snapshot.Generate("modelBuilder", model, sb)
 299
 300        sb
 301        |> appendEmptyLine
 302        |> string
 303
 304    let generateSnapshot (modelSnapshotNamespace: string) (contextType: Type) (modelSnapshotName: string) (model: IModel
 305        let sb = IndentedStringBuilder()
 306
 307        let defaultNamespaces =
 308            seq {
 0309                 yield "System"
 0310                 yield "Microsoft.EntityFrameworkCore"
 0311                 yield "Microsoft.EntityFrameworkCore.Infrastructure"
 0312                 yield "Microsoft.EntityFrameworkCore.Metadata"
 0313                 yield "Microsoft.EntityFrameworkCore.Migrations"
 0314                 yield "Microsoft.EntityFrameworkCore.Storage.ValueConversion"
 315
 0316                 if contextType.Namespace |> String.IsNullOrEmpty |> not then
 0317                    yield contextType.Namespace
 318            }
 319            |> Seq.toList
 320
 321        let modelNamespaces = model |> getModelNamespaces
 322
 323        let namespaces =
 324            (defaultNamespaces @ modelNamespaces)
 325            |> sortNamespaces
 326            |> Seq.distinct
 327
 328        sb
 329            |> append "namespace " |> appendLine (code.Namespace [|modelSnapshotNamespace|])
 330            |> appendEmptyLine
 331            |> writeNamespaces namespaces
 332            |> appendEmptyLine
 333            |> append "[<DbContext(typeof<" |> append (contextType |> code.Reference) |> appendLine ">)>]"
 334            |> append "type " |> append (modelSnapshotName |> code.Identifier) |> appendLine "() ="
 335            |> indent |> appendLine "inherit ModelSnapshot()"
 336            |> appendEmptyLine
 337            |> appendLine "override this.BuildModel(modelBuilder: ModelBuilder) ="
 338            |> indent
 339            |> ignore
 340
 341        snapshot.Generate("modelBuilder", model, sb)
 342
 343        sb
 344            |> appendEmptyLine
 345            |> unindent
 346            |> string
 347
 348    // Due to api shape we're currently forced to work around the fact EF expects 2 files per migration
 0349    let mutable tempUpOperations = list.Empty
 0350    let mutable tempDownOperations = list.Empty
 0351    let mutable tempMigrationName = String.Empty
 352
 0353    override __.Language with get() = "F#"
 0354    override __.FileExtension with get() = ".fs"
 355
 356    // Defined in the order of when it's called during migration add
 357    override this.GenerateMigration (migrationNamespace, migrationName, upOperations, downOperations) =
 0358        tempUpOperations <- Seq.toList upOperations
 0359        tempDownOperations <- Seq.toList downOperations
 0360        tempMigrationName <- migrationName
 0361        "// intentionally empty"
 362
 363    override this.GenerateMetadata (migrationNamespace, contextType, migrationName, migrationId, targetModel) =
 0364        if tempMigrationName = migrationName then
 0365            generateMigration migrationNamespace migrationName migrationId contextType tempUpOperations tempDownOperatio
 366        else
 0367            invalidOp "Migration isn't the same as previously saved during GenerateMigration, DEV: did the order of oper
 368
 369    override this.GenerateSnapshot (modelSnapshotNamespace, contextType, modelSnapshotName, model) =
 0370        generateSnapshot modelSnapshotNamespace contextType modelSnapshotName model
-
-
-
-

Methods/Properties

-.ctor(Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsCodeGeneratorDependencies,EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGeneratorDependencies)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,System.Type)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(<>f__AnonymousType2925090566`2<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(<>f__AnonymousType2925090566`2<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(System.String)
-Invoke(<>f__AnonymousType2925090566`2<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(<>f__AnonymousType2925090566`2<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddColumnOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddUniqueConstraintOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddForeignKeyOperation)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IKey)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IIndex)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.ColumnOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.ColumnOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddColumnOperation)
-Invoke(System.Object[0...,0...])
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-Close()
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(System.Object[0...,0...])
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.Internal.Property)
-Invoke(System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable>)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.AddColumnOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation)
-Invoke(Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-Language()
-FileExtension()
-GenerateMigration(System.String,System.String,System.Collections.Generic.IReadOnlyList`1<Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation>,System.Collections.Generic.IReadOnlyList`1<Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation>)
-GenerateMetadata(System.String,System.Type,System.String,System.String,Microsoft.EntityFrameworkCore.Metadata.IModel)
-Invoke(System.Collections.Generic.IReadOnlyList`1<Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation>,Microsoft.EntityFrameworkCore.Metadata.IModel)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IModel)
-Invoke(Microsoft.FSharp.Collections.FSharpList`1<Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation>)
-Invoke(System.Type)
-Invoke(System.String)
-GenerateSnapshot(System.String,System.Type,System.String,Microsoft.EntityFrameworkCore.Metadata.IModel)
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsGeneratorDependencies.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsGeneratorDependencies.htm deleted file mode 100644 index e53cf08..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsGeneratorDependencies.htm +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGeneratorDependencies - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGeneratorDependencies
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGeneratorDependencies.fs
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:37
Line coverage:0% (0 of 10)
Covered branches:0
Total branches:0
-

Metrics

- - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)100%0%0
With(...)100%0%0
With(...)100%0%0
With(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGeneratorDependencies.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Migrations.Design
 2
 3open System
 4open System.Collections.Generic
 5open Microsoft.EntityFrameworkCore.Metadata
 6open Microsoft.EntityFrameworkCore.Metadata.Internal
 7open Microsoft.EntityFrameworkCore.Migrations.Operations
 8open Microsoft.EntityFrameworkCore.Internal
 9
 10open EntityFrameworkCore.FSharp.EntityFrameworkExtensions
 11open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 12open EntityFrameworkCore.FSharp.Internal
 13open Microsoft.EntityFrameworkCore.Infrastructure
 14open Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal
 15open Microsoft.EntityFrameworkCore.Design
 16open Microsoft.EntityFrameworkCore.Migrations.Design
 17open Microsoft.EntityFrameworkCore.Design
 18
 019type FSharpMigrationsGeneratorDependencies
 20    (
 021        fSharpHelper : ICSharpHelper,
 022        fSharpMigrationOperationGenerator : ICSharpMigrationOperationGenerator,
 023        fSharpSnapshotGenerator : ICSharpSnapshotGenerator
 24    ) =
 25
 026    member this.FSharpHelper = fSharpHelper
 027    member this.FSharpMigrationOperationGenerator = fSharpMigrationOperationGenerator
 028    member this.FSharpSnapshotGenerator = fSharpSnapshotGenerator
 29
 30    member this.With (fSharpHelper : ICSharpHelper) =
 031        FSharpMigrationsGeneratorDependencies (fSharpHelper, this.FSharpMigrationOperationGenerator, this.FSharpSnapshot
 32
 33    member this.With (fSharpMigrationOperationGenerator : ICSharpMigrationOperationGenerator) =
 034        FSharpMigrationsGeneratorDependencies (this.FSharpHelper, fSharpMigrationOperationGenerator, this.FSharpSnapshot
 35
 36    member this.With (fSharpSnapshotGenerator : ICSharpSnapshotGenerator) =
 037        FSharpMigrationsGeneratorDependencies (this.FSharpHelper, this.FSharpMigrationOperationGenerator, fSharpSnapshot
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsScaffolder.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsScaffolder.htm deleted file mode 100644 index e4e35f4..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpMigrationsScaffolder.htm +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsScaffolder - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsScaffolder
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs
Covered lines:0
Uncovered lines:27
Coverable lines:27
Total lines:53
Line coverage:0% (0 of 27)
Covered branches:0
Total branches:6
Branch coverage:0% (0 of 6)
-

Metrics

- - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)100%0%0
Save(...)480%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Migrations.Design
 2
 3open Microsoft.EntityFrameworkCore.Migrations.Design
 4open Microsoft.EntityFrameworkCore.Internal
 5open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 6open System.Text
 7open System.IO
 8
 09type FSharpMigrationsScaffolder(dependencies) =
 010    inherit MigrationsScaffolder(dependencies)
 11
 12    // Copy of (modulo custom code changes) https://github.com/aspnet/EntityFrameworkCore/blob/d8b7ebbfabff3d2e8560c24b1
 13    override this.Save(projectDir, migration, outputDir) =
 014        let lastMigrationFileName = migration.PreviousMigrationId + migration.FileExtension
 15        let migrationDirectory =
 016            if outputDir |> notNull then
 017                outputDir
 18            else
 019                this.GetDirectory(projectDir, lastMigrationFileName, migration.MigrationSubNamespace)
 020        let migrationFile = Path.Combine(migrationDirectory, migration.MigrationId + migration.FileExtension)
 021        let migrationMetadataFile = Path.Combine(migrationDirectory, migration.MigrationId + ".Designer" + migration.Fil
 022        let modelSnapshotFileName = migration.SnapshotName + migration.FileExtension
 23        let modelSnapshotDirectory =
 024            if outputDir |> notNull then
 025                outputDir
 26            else
 027                this.GetDirectory(projectDir, modelSnapshotFileName, migration.SnapshotSubnamespace)
 028        let modelSnapshotFile = Path.Combine(modelSnapshotDirectory, modelSnapshotFileName)
 29
 030        dependencies.OperationReporter.WriteVerbose(DesignStrings.WritingMigration(migrationFile))
 031        Directory.CreateDirectory(migrationDirectory) |> ignore
 32
 33        (* Custom code
 34           This is all we need to support an F# compatible file structure
 35           A makeover of the API (GenerateMigration ... -> migrationCode: string * metadataCode: string) would be best
 36           That should include this Save method taking into account it sometimes can receive nothing for metadataCode
 37        *)
 038        if migration.MigrationCode = "// intentionally empty" then
 039            File.WriteAllText(migrationFile, migration.MetadataCode, Encoding.UTF8)
 40        else
 041            File.WriteAllText(migrationFile, migration.MigrationCode, Encoding.UTF8)
 042            File.WriteAllText(migrationMetadataFile, migration.MetadataCode, Encoding.UTF8)
 43        (* End custom code *)
 44
 045        dependencies.OperationReporter.WriteVerbose(DesignStrings.WritingSnapshot(modelSnapshotFile))
 046        Directory.CreateDirectory(modelSnapshotDirectory) |> ignore
 047        File.WriteAllText(modelSnapshotFile, migration.SnapshotCode, Encoding.UTF8)
 48
 049        MigrationFiles (
 050            MigrationFile = migrationFile,
 051            MetadataFile = migrationMetadataFile,
 052            SnapshotFile = modelSnapshotFile
 053        )
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpModelGenerator.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpModelGenerator.htm deleted file mode 100644 index 3bdfa38..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpModelGenerator.htm +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Scaffolding.Internal.FSharpModelGenerator - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Scaffolding.Internal.FSharpModelGenerator
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs
Covered lines:56
Uncovered lines:1
Coverable lines:57
Total lines:120
Line coverage:98.2% (56 of 57)
Covered branches:2
Total branches:4
Branch coverage:50% (2 of 4)
-

Metrics

- - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)520%0%0
Invoke(...)10100%0%1
GenerateModel(...)22100%100%2
Invoke(...)10100%0%1
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Scaffolding.Internal
 2
 3open System.IO
 4open Microsoft.EntityFrameworkCore.Metadata
 5open Microsoft.EntityFrameworkCore.Scaffolding
 6open Microsoft.EntityFrameworkCore.Scaffolding.Internal
 7
 8open EntityFrameworkCore.FSharp.Scaffolding
 9open EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes
 10open EntityFrameworkCore.FSharp.EntityFrameworkExtensions
 11open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 12open Microsoft.EntityFrameworkCore.Internal
 13
 14
 315type FSharpModelGenerator
 16    (dependencies : ModelCodeGeneratorDependencies,
 317     contextGenerator : ICSharpDbContextGenerator,
 318     entityTypeGenerator : ICSharpEntityTypeGenerator) =
 319    inherit ModelCodeGenerator(dependencies)
 20
 321    let fileExtension = ".fs"
 22
 323    let defaultNamespaces = [
 324        "System";
 325        "System.Collections.Generic";
 326    ]
 27
 328    let annotationNamespaces = [
 329        "System.ComponentModel.DataAnnotations";
 330        "System.ComponentModel.DataAnnotations.Schema";
 331    ]
 32
 33    let getNamespacesFromModel (model:IModel) =
 34        model.GetEntityTypes()
 135        |> Seq.collect (fun e -> e.GetProperties())
 136        |> Seq.collect (fun p -> getNamespaces p.ClrType)
 037        |> Seq.filter (fun ns -> defaultNamespaces |> Seq.contains ns |> not)
 38        |> Seq.distinct
 39        |> Seq.sort
 40
 41    let createDomainFileContent (model:IModel) (useDataAnnotations:bool) (``namespace``:string) (domainFileName: string)
 42
 43        let ``module`` =
 44            domainFileName.Replace("Context", "Domain")
 45
 46        let namespaces =
 47            if useDataAnnotations then
 48                defaultNamespaces |> Seq.append annotationNamespaces |> Seq.append (model |> getNamespacesFromModel)
 49            else
 50                defaultNamespaces  |> Seq.append (model |> getNamespacesFromModel)
 51
 52        let writeNamespaces ``namespace`` (sb:IndentedStringBuilder) =
 53
 254            sb
 255                |> append "namespace " |> appendLine ``namespace``
 256                |> appendEmptyLine
 257                |> writeNamespaces namespaces
 258                |> appendEmptyLine
 59
 60        let noEntities =
 61            model.GetEntityTypes() |> Seq.isEmpty
 62
 63        IndentedStringBuilder()
 64                |> writeNamespaces ``namespace``
 65                |> append "module rec " |> append ``module`` |> appendLine " ="
 66                |> appendEmptyLine
 67                |> appendIfTrue (noEntities) "    ()"
 68
 169    override __.Language = "F#"
 70
 71    override __.GenerateModel(model: IModel, options: ModelCodeGenerationOptions) =
 272        let resultingFiles = ScaffoldedModel()
 73
 274        let generatedCode =
 275            contextGenerator.WriteCode(
 276                model,
 277                options.ContextName,
 278                options.ConnectionString,
 279                options.ContextNamespace,
 280                options.ModelNamespace,
 281                options.UseDataAnnotations,
 282                options.SuppressConnectionStringWarning)
 83
 284        let dbContextFileName = options.ContextName + fileExtension;
 85
 86        let path =
 287            if notNull options.ContextDir then
 188                Path.Combine(options.ContextDir, dbContextFileName)
 89            else
 190                dbContextFileName
 91
 292        let contextFile =
 293            ScaffoldedFile(
 294                Code = generatedCode,
 295                Path = path)
 96
 297        resultingFiles.ContextFile <- contextFile
 98
 299        let dbContextFileName = options.ContextName
 100
 2101        let domainFile = ScaffoldedFile()
 2102        domainFile.Path <- ("TestDomain" + fileExtension)
 103
 2104        let domainFileBuilder =
 2105            createDomainFileContent model options.UseDataAnnotations options.ModelNamespace dbContextFileName
 106
 2107        model.GetEntityTypes()
 2108            |> Seq.iter(fun entityType ->
 3109                domainFileBuilder
 3110                    |> append (entityTypeGenerator.WriteCode(entityType,
 3111                                                                options.ModelNamespace,
 3112                                                                options.UseDataAnnotations))
 3113                    |> ignore
 2114            )
 2115        domainFile.Code <- (domainFileBuilder.ToString())
 116
 2117        resultingFiles.AdditionalFiles.Add(domainFile)
 118
 2119        resultingFiles
 120
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpSnapshotGenerator.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpSnapshotGenerator.htm deleted file mode 100644 index 84856bf..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpSnapshotGenerator.htm +++ /dev/null @@ -1,955 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs
Covered lines:104
Uncovered lines:238
Coverable lines:342
Total lines:751
Line coverage:30.4% (104 of 342)
Covered branches:24
Total branches:88
Branch coverage:27.2% (24 of 88)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor(...)10100%0%1
Invoke(...)3266.67%66.67%3.33
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)200%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
GenerateNext(...)14640%23.08%103.2
Invoke(...)10100%0%1
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)2266.67%66.67%2.15
Invoke(...)3266.67%66.67%3.33
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)580%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)10100%0%1
generateEntityTypeAnnotations(...)16409687.5%72%16.5
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)22100%100%2
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)100%0%0
generateForeignKeyAnnotations(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
generateForeignKey(...)1540960%0%0
generateForeignKeys(...)100%0%0
Invoke(...)100%0%0
generateOwnedType(...)100%0%0
generateOwnedTypes(...)100%0%0
Invoke(...)100%0%0
generateRelationships(...)100%0%0
Invoke(...)100%0%0
generateData(...)220%0%0
generateEntityType(...)7320%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
generateEntityTypeRelationships(...)100%0%0
generateEntityTypes(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
generate(...)220%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
Microsoft-EntityFrameworkCore-Migrations-Design-ICSharpSnapshotGenerator-Generate(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Migrations.Design
 2
 3open System
 4open System.Collections.Generic
 5open Microsoft.EntityFrameworkCore
 6open Microsoft.EntityFrameworkCore.Metadata
 7open Microsoft.EntityFrameworkCore.Internal
 8
 9open EntityFrameworkCore.FSharp.SharedTypeExtensions
 10open EntityFrameworkCore.FSharp.EntityFrameworkExtensions
 11open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 12open Microsoft.EntityFrameworkCore.Infrastructure
 13open Microsoft.EntityFrameworkCore.Metadata.Internal
 14open Microsoft.EntityFrameworkCore.Storage.ValueConversion
 15open Microsoft.EntityFrameworkCore.Design
 16open Microsoft.EntityFrameworkCore.Storage
 17open Microsoft.EntityFrameworkCore.ChangeTracking.Internal
 18
 619type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalTypeMappingSource) =
 20
 21    let getAnnotations (o:IAnnotatable) =
 22        ResizeArray (o.GetAnnotations())
 23
 24    let appendLineIfTrue truth value b =
 25        if truth then
 26            b |> appendEmptyLine |> append value
 27        else
 28            b
 29
 30    let appendIfTrue truth value b =
 31        if truth then
 32            b |> append value
 33        else
 34            b
 35
 36    let findValueConverter (p:IProperty) =
 37        let mapping = findMapping p
 38
 39        if isNull mapping then p.GetValueConverter() else mapping.Converter
 40
 41    let generateFluentApiForAnnotation (annotations: IAnnotation ResizeArray) (annotationName:string) (annotationValueFu
 42
 43        let annotationValueFunc' =
 44            match annotationValueFunc with
 45            | Some a -> a
 1446            | None -> (fun a -> if isNull a then null else a.Value)
 47
 21348        let annotation = annotations |> Seq.tryFind (fun a -> a.Name = annotationName)
 49        let annotationValue = annotation |> Option.map annotationValueFunc'
 50
 51        let genericTypesFunc' =
 52            match genericTypesFunc with
 53            | Some a -> a
 854            | None -> (fun _ -> List<Type>() :> _)
 55
 56        let genericTypes = annotation |> Option.map genericTypesFunc'
 57        let hasGenericTypes =
 58            match genericTypes with
 059            | Some gt -> ((gt |> Seq.isEmpty |> not) && (gt |> Seq.forall(isNull >> not)))
 60            | None -> false
 61
 62        if (annotationValue.IsSome && (annotationValue.Value |> isNull |> not)) || hasGenericTypes then
 63            sb
 64            |> appendEmptyLine
 65            |> append "."
 66            |> append fluentApiMethodName
 67            |> ignore
 68
 69            if hasGenericTypes then
 70                sb
 71                    |> append "<"
 072                    |> append (String.Join(",", (genericTypes.Value |> Seq.map(code.Reference))))
 73                    |> append ">"
 74                    |> ignore
 75
 76            sb
 77                |> append "("
 78                |> ignore
 79
 80            if annotationValue.IsSome && annotationValue.Value |> notNull then
 81                sb |> append (annotationValue.Value |> code.UnknownLiteral) |> ignore
 82
 83            sb
 84                |> append ")"
 85                |> ignore
 86
 87            annotation.Value |> annotations.Remove |> ignore
 88
 89        sb
 90
 91    let sort (entityTypes:IEntityType list) =
 92        let entityTypeGraph = new Multigraph<IEntityType, int>()
 93        entityTypeGraph.AddVertices(entityTypes)
 94
 95        entityTypes
 096            |> Seq.filter(fun e -> e.BaseType |> isNull |> not)
 097            |> Seq.iter(fun e -> entityTypeGraph.AddEdge(e.BaseType, e, 0))
 98        entityTypeGraph.TopologicalSort() |> Seq.toList
 99
 100    let ignoreAnnotationTypes (annotations:IAnnotation ResizeArray) (annotation:string) (sb:IndentedStringBuilder) =
 101
 102        let annotationsToRemove =
 155103            annotations |> Seq.filter (fun a -> a.Name.StartsWith(annotation, StringComparison.OrdinalIgnoreCase)) |> Se
 104
 69105        annotationsToRemove |> Seq.iter (annotations.Remove >> ignore)
 106
 107        sb
 108
 109    let generateAnnotation (annotation:IAnnotation) (sb:IndentedStringBuilder) =
 110        let name = annotation.Name |> code.Literal
 111        let value = annotation.Value |> code.UnknownLiteral
 112
 113        sb
 0114            |> append (sprintf ".HasAnnotation(%s, %s)" name value)
 115            |> appendEmptyLine
 116            |> ignore
 117
 118    let generateAnnotations (annotations:IAnnotation ResizeArray) (sb:IndentedStringBuilder) =
 119
 120        annotations
 121        |> Seq.iter(fun a ->
 122            sb
 0123                |> generateAnnotation a)
 124
 125        sb
 126
 127    let getMappingHints (hints : ConverterMappingHints) =
 128        seq {
 0129            if hints.Size.HasValue then
 0130                yield (sprintf "size = Nullable(%s)" (hints.Size.Value |> code.Literal))
 0131            if hints.Precision.HasValue then
 0132                yield (sprintf "precision = Nullable(%s)" (hints.Precision.Value |> code.Literal))
 0133            if hints.Scale.HasValue then
 0134                yield (sprintf "scale = Nullable(%s)" (hints.Scale.Value |> code.Literal))
 0135            if hints.IsUnicode.HasValue then
 0136                yield (sprintf "unicode = Nullable(%s)" (hints.IsUnicode.Value |> code.Literal))
 137
 0138            if hints :? RelationalConverterMappingHints then
 0139                let relationalHints = hints :?> RelationalConverterMappingHints
 0140                if relationalHints.IsFixedLength.HasValue then
 0141                    yield (sprintf "fixedLength = Nullable(%s)" (relationalHints.IsFixedLength.Value |> code.Literal))
 142        }
 143
 144    let genPropertyAnnotations (p:IProperty) (sb:IndentedStringBuilder) =
 22145        let annotations =  getAnnotations p
 146        let valueConverter = p |> findValueConverter
 147
 148        if valueConverter |> notNull && valueConverter.MappingHints |> notNull then
 149            let hints = valueConverter.MappingHints
 150            let storeType = valueConverter.ProviderClrType |> code.Reference
 151            let createStoreType = sprintf "(fun v -> Unchecked.defaultof<%s>)" storeType
 152
 153            let mappingHints = hints |> getMappingHints |> join ", "
 154
 155            sb
 156                |> appendEmptyLine
 0157                |> append (sprintf ".HasConversion(ValueConverter<%s,%s>(%s, %s), ConverterMappingHints(%s))" storeType 
 158                |> ignore
 159
 160        let consumed =
 161            annotations
 162            |> Seq.filter(fun a -> a.Name = CoreAnnotationNames.ValueConverter || a.Name = CoreAnnotationNames.ProviderC
 163            |> Seq.toList
 164
 165        consumed
 6166        |> Seq.iter (annotations.Remove >> ignore)
 167
 168        let getValueFunc (valueConverter: ValueConverter) (a:IAnnotation) =
 1169            if valueConverter |> notNull then
 0170                valueConverter.ConvertToProvider.Invoke(a.Value)
 171            else
 1172                a.Value
 173
 174
 175        let columnType (p: IProperty) =
 22176            if p.GetColumnType() |> isNull then
 0177                mappingSource.GetMapping(p).StoreType |> code.Literal
 178            else
 22179                p.GetColumnType() |> code.Literal
 180
 181        sb
 182            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.ColumnName None "HasColumnName" None
 183            |> ignore
 184
 185        sb
 186        |> appendEmptyLine
 187        |> append "."
 188        |> append "HasColumnType"
 189        |> append "("
 190        |> append (columnType p)
 191        |> append ")"
 192        |> ignore
 193
 194        sb
 195            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.DefaultValueSql None "HasDefaultValu
 196            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.ComputedColumnSql None "HasComputedC
 197            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.IsFixedLength None "IsFixedLength" N
 198            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Comment None "HasComment" None
 199            |> generateFluentApiForAnnotation annotations CoreAnnotationNames.MaxLength None "HasMaxLength" None
 200            |> generateFluentApiForAnnotation annotations CoreAnnotationNames.Unicode None "IsUnicode" None
 201
 202            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.DefaultValue (getValueFunc valueConv
 203
 204            |> ignoreAnnotationTypes annotations RelationalAnnotationNames.ColumnType
 205            |> ignoreAnnotationTypes annotations CoreAnnotationNames.ValueGeneratorFactory
 206            |> ignoreAnnotationTypes annotations CoreAnnotationNames.PropertyAccessMode
 207            |> ignoreAnnotationTypes annotations CoreAnnotationNames.ChangeTrackingStrategy
 208            |> ignoreAnnotationTypes annotations CoreAnnotationNames.BeforeSaveBehavior
 209            |> ignoreAnnotationTypes annotations CoreAnnotationNames.AfterSaveBehavior
 210            |> ignoreAnnotationTypes annotations CoreAnnotationNames.TypeMapping
 211            |> ignoreAnnotationTypes annotations CoreAnnotationNames.ValueComparer
 212            |> ignoreAnnotationTypes annotations CoreAnnotationNames.KeyValueComparer
 213            |> ignoreAnnotationTypes annotations CoreAnnotationNames.StructuralValueComparer
 214            |> ignoreAnnotationTypes annotations CoreAnnotationNames.ValueConverter
 215            |> ignoreAnnotationTypes annotations CoreAnnotationNames.ProviderClrType
 216
 217            |> generateAnnotations annotations
 218            |> append " |> ignore"
 219
 220    let generateBaseType (funcId: string) (baseType: IEntityType) (sb:IndentedStringBuilder) =
 221
 222        if (baseType |> notNull) then
 223            sb
 224                |> appendEmptyLine
 0225                |> append (sprintf "%s.HasBaseType(%s)" funcId (baseType.Name |> code.Literal))
 226        else
 227            sb
 228
 229    let generateProperty (funcId:string) (p:IProperty) (sb:IndentedStringBuilder) =
 230
 231        let isPropertyRequired =
 232            let isNullable =
 233                p.IsPrimaryKey() |> not ||
 234                p.ClrType |> isOptionType ||
 235                p.ClrType |> isNullableType
 236
 237            isNullable <> p.IsNullable
 238
 239        let converter = findValueConverter p
 240        let clrType =
 241            if isNull converter then p.ClrType else converter.ProviderClrType
 242
 243        sb
 244            |> appendEmptyLine
 245            |> append funcId
 246            |> append ".Property<"
 247            |> append (clrType |> code.Reference)
 248            |> append ">("
 249            |> append (p.Name |> code.Literal)
 250            |> append ")"
 251            |> indent
 252            |> appendLineIfTrue p.IsConcurrencyToken ".IsConcurrencyToken()"
 253            |> appendLineIfTrue isPropertyRequired ".IsRequired()"
 254            |> appendLineIfTrue (p.ValueGenerated <> ValueGenerated.Never) (if p.ValueGenerated = ValueGenerated.OnAdd t
 255            |> genPropertyAnnotations p
 256            |> unindent
 257
 258    let generateProperties (funcId: string) (properties: IProperty seq) (sb:IndentedStringBuilder) =
 0259        properties |> Seq.iter (fun p -> generateProperty funcId p sb |> ignore)
 260        sb
 261
 262    let generateKey (funcId: string) (key:IKey) (isPrimary:bool) (sb:IndentedStringBuilder) =
 263
 0264        let annotations = getAnnotations key
 265
 266        sb
 267            |> appendEmptyLine
 268            |> appendEmptyLine
 269            |> append funcId
 270            |> append (if isPrimary then ".HasKey(" else ".HasAlternateKey(")
 0271            |> append (key.Properties |> Seq.map (fun p -> (p.Name |> code.Literal)) |> join ", ")
 272            |> append ")"
 273            |> indent
 274            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Name Option.None "HasName" Option.No
 275            |> generateAnnotations annotations
 276            |> appendLine " |> ignore"
 277            |> unindent
 278
 279    let generateKeys (funcId: string) (keys: IKey seq) (pk:IKey) (sb:IndentedStringBuilder) =
 280
 281        if pk |> notNull then
 282            generateKey funcId pk true sb |> ignore
 283
 284        keys
 0285            |> Seq.filter(fun k -> k <> pk && (k.GetReferencingForeignKeys() |> Seq.isEmpty) && (getAnnotations k) |> Se
 0286            |> Seq.iter (fun k -> generateKey funcId k false sb |> ignore)
 287
 288        sb
 289
 290    let generateIndex (funcId: string) (idx:IIndex) (sb:IndentedStringBuilder) =
 291
 0292        let annotations = getAnnotations idx
 293
 294        sb
 295            |> appendEmptyLine
 296            |> append funcId
 297            |> append ".HasIndex("
 0298            |> append (String.Join(", ", (idx.Properties |> Seq.map (fun p -> p.Name |> code.Literal))))
 299            |> append ")"
 300            |> indent
 301            |> appendLineIfTrue idx.IsUnique ".IsUnique()"
 302            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Name Option.None "HasName" Option.No
 303            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Filter Option.None "HasFilter" Optio
 304            |> generateAnnotations annotations
 305            |> appendLine " |> ignore"
 306            |> unindent
 307            |> ignore
 308
 309    let generateIndexes (funcId: string) (indexes:IIndex seq) (sb:IndentedStringBuilder) =
 310
 0311        indexes |> Seq.iter (fun idx -> sb |> appendEmptyLine |> generateIndex funcId idx)
 312        sb
 313
 314    let processDataItem (props : IProperty list) (sb:IndentedStringBuilder) (data : IDictionary<string, obj>) =
 315
 316        let writeProperty isFirst (p : IProperty) =
 0317            match data.TryGetValue p.Name with
 318            | true, value ->
 0319                if not (isNull value) then
 0320                    if isFirst then
 0321                        sb |> appendLine "," |> ignore
 322
 0323                    sb
 0324                    |> append (sprintf "%s = %s" (code.Identifier(p.Name)) (code.UnknownLiteral value) )
 0325                    |> ignore
 326                else
 0327                    ()
 0328            | _ -> ()
 329
 330
 331        sb |> appendLine "({" |> indent |> ignore
 332
 333        props |> Seq.head |> writeProperty true
 0334        props |> Seq.tail |> Seq.iter(fun p -> writeProperty false p)
 335
 336        sb |> appendLine "} :> obj)" |> unindent |> ignore
 337        ()
 338
 339    let processDataItems (data : IDictionary<string, obj> seq) (propsToOutput : IProperty list) (sb:IndentedStringBuilde
 340
 341        (data |> Seq.head) |> processDataItem propsToOutput sb
 342
 343        data
 344        |> Seq.tail
 345        |> Seq.iter(fun d ->
 0346                sb |> appendLine " |> ignore" |> ignore
 0347                d |> processDataItem propsToOutput sb
 348            )
 349        sb
 350
 351    member this.generatePropertyAnnotations =
 44352        genPropertyAnnotations
 353
 354    member this.generateEntityTypeAnnotations (funcId: string) (entityType:IEntityType) (sb:IndentedStringBuilder) =
 32355        let annotations = getAnnotations entityType
 356
 357        let tryGetAnnotationByName (name:string) =
 447358            let a = annotations |> Seq.tryFind (fun a -> a.Name = name)
 359
 240360            match a with
 21361            | Some a' -> annotations.Remove(a') |> ignore
 219362            | None -> ()
 363
 240364            a
 365
 16366        let tableNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.TableName
 16367        let schemaAnnotation = tryGetAnnotationByName RelationalAnnotationNames.Schema
 368
 369        let tableName =
 16370            match tableNameAnnotation with
 1371            | Some t -> t.Value |> string
 15372            | None -> getDisplayName entityType
 373
 374        let hasSchema, schema =
 16375            match schemaAnnotation with
 1376            | Some s -> true, s.Value
 15377            | None -> false, null
 378
 16379        sb
 16380            |> appendEmptyLine
 16381            |> append funcId
 16382            |> append ".ToTable("
 16383            |> append (tableName |> code.Literal)
 16384            |> appendIfTrue hasSchema (sprintf ",%A" schema)
 16385            |> append ") |> ignore"
 16386            |> appendEmptyLine
 16387            |> ignore
 388
 16389        let discriminatorPropertyAnnotation =
 16390            tryGetAnnotationByName CoreAnnotationNames.DiscriminatorProperty
 16391        let discriminatorValueAnnotation =
 16392            tryGetAnnotationByName CoreAnnotationNames.DiscriminatorValue
 393
 16394        if discriminatorPropertyAnnotation.IsSome || discriminatorValueAnnotation.IsSome then
 2395            sb
 2396                |> appendEmptyLine
 2397                |> append funcId
 2398                |> append ".HasDiscriminator"
 2399                |> ignore
 400
 2401            match discriminatorPropertyAnnotation with
 402            | Some a when notNull a.Value  ->
 1403                let discriminatorProperty = entityType.FindProperty(string a.Value)
 404
 405                let propertyClrType =
 1406                    let valueConverter = findValueConverter discriminatorProperty
 1407                    if notNull valueConverter then
 0408                        makeNullable discriminatorProperty.IsNullable valueConverter.ProviderClrType
 409                    else
 1410                        discriminatorProperty.ClrType
 411
 1412                sb
 1413                    |> append "<"
 1414                    |> append (code.Reference propertyClrType)
 1415                    |> append ">("
 1416                    |> append (code.UnknownLiteral a.Value)
 1417                    |> append ")"
 1418                    |> ignore
 419            | _ ->
 1420                sb |> append "()" |> ignore
 421
 422
 2423            match discriminatorValueAnnotation with
 424            | Some a ->
 1425                let discriminatorProperty =
 1426                    entityType.GetRootType().GetDiscriminatorProperty()
 427
 428                let value =
 1429                    if discriminatorProperty |> notNull then
 0430                        let valueConverter = discriminatorProperty |> findValueConverter
 0431                        if valueConverter |> notNull then
 0432                            valueConverter.ConvertToProvider.Invoke(a.Value)
 433                        else
 0434                            a.Value
 435                    else
 1436                        a.Value
 437
 1438                sb
 1439                    |> append (sprintf ".HasValue(%s) |> ignore" (value |> code.UnknownLiteral))
 1440                    |> appendEmptyLine
 1441                    |> ignore
 442            | None ->
 1443                sb
 1444                |> append " |> ignore"
 1445                |> appendEmptyLine
 1446                |> ignore
 447
 16448        let commentAnnotation = tryGetAnnotationByName RelationalAnnotationNames.Comment
 449
 16450        match commentAnnotation with
 451        | Some c ->
 1452            sb
 1453            |> appendEmptyLine
 1454            |> append funcId
 1455            |> append "."
 1456            |> append "HasComment"
 1457            |> append "("
 1458            |> append (c.Value |> code.UnknownLiteral)
 1459            |> appendLine ") |> ignore"
 1460            |> ignore
 15461        | None -> ()
 462
 16463        let annotationsToRemove =
 16464            [|
 16465                CoreAnnotationNames.NavigationCandidates
 16466                CoreAnnotationNames.AmbiguousNavigations
 16467                CoreAnnotationNames.InverseNavigations
 16468                CoreAnnotationNames.NavigationAccessMode
 16469                CoreAnnotationNames.PropertyAccessMode
 16470                CoreAnnotationNames.ChangeTrackingStrategy
 16471                CoreAnnotationNames.ConstructorBinding
 16472                CoreAnnotationNames.DefiningQuery
 16473                CoreAnnotationNames.QueryFilter
 16474                RelationalAnnotationNames.CheckConstraints |]
 475
 336476        annotationsToRemove |> Seq.iter (tryGetAnnotationByName >> ignore)
 477
 16478        annotations
 16479            |> Seq.iter(fun a ->
 16480                sb
 16481                    |> appendEmptyLine
 16482                    |> append funcId
 16483                    |> generateAnnotation a)
 484
 16485        sb
 486
 487    member private this.generateForeignKeyAnnotations (fk: IForeignKey) sb =
 488
 0489        let annotations = getAnnotations fk
 490
 0491        sb
 0492            |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Name Option.None "HasConstraintName"
 0493            |> generateAnnotations annotations
 494
 495    member private this.generateForeignKey funcId (fk: IForeignKey) sb =
 496
 497        let literalPropNames (properties: seq<IProperty>) =
 0498            properties
 0499            |> Seq.map (fun p -> p.Name |> code.Literal)
 500
 0501        if not fk.IsOwnership then
 502            let dependent =
 0503                if isNull fk.DependentToPrincipal then
 0504                    code.UnknownLiteral null
 505                 else
 0506                    fk.DependentToPrincipal.Name |> code.Literal
 507
 0508            sb
 0509            |> append funcId
 0510            |> append ".HasOne("
 0511            |> append (fk.PrincipalEntityType.Name |> code.Literal)
 0512            |> append ","
 0513            |> append dependent
 0514            |> ignore
 515        else
 0516            sb
 0517            |> append funcId
 0518            |> append ".WithOwner("
 0519            |> ignore
 520
 0521            if notNull fk.DependentToPrincipal then
 0522                sb
 0523                |> append (fk.DependentToPrincipal.Name |> code.Literal)
 0524                |> ignore
 525
 0526        sb
 0527        |> append ")"
 0528        |> appendEmptyLine
 0529        |> indent
 0530        |> ignore
 531
 0532        if fk.IsUnique && (not fk.IsOwnership) then
 0533            sb
 0534            |> append ".WithOne("
 0535            |> ignore
 536
 0537            if notNull fk.PrincipalToDependent then
 0538                sb
 0539                |> append (fk.PrincipalToDependent.Name |> code.Literal)
 0540                |> ignore
 541
 0542            sb
 0543            |> append (")")
 0544            |> append ".HasForeignKey("
 0545            |> append (fk.DeclaringEntityType.Name |> code.Literal)
 0546            |> append ", "
 0547            |> append (String.Join(",", (literalPropNames fk.Properties)))
 0548            |> append ")"
 0549            |> ignore
 550
 0551            this.generateForeignKeyAnnotations fk sb |> ignore
 552
 0553            if fk.PrincipalKey <> fk.PrincipalEntityType.FindPrimaryKey() then
 0554                sb
 0555                |> appendEmptyLine
 0556                |> append ".HasPrincipalKey("
 0557                |> append (fk.PrincipalEntityType.Name |> code.Literal)
 0558                |> append ", "
 0559                |> append (String.Join(", ", (literalPropNames fk.PrincipalKey.Properties)))
 0560                |> append ")"
 0561                |> ignore
 562
 563        else
 0564            if not fk.IsOwnership then
 0565                sb
 0566                |> append ".WithMany("
 0567                |> ignore
 568
 0569                if notNull fk.PrincipalToDependent then
 0570                    sb
 0571                    |> append (fk.PrincipalToDependent.Name |> code.Literal)
 0572                    |> ignore
 573
 0574                sb
 0575                |> append ")"
 0576                |> ignore
 577
 0578            sb
 0579            |> appendEmptyLine
 0580            |> append ".HasForeignKey("
 0581            |> append (String.Join(", ", (literalPropNames fk.Properties)))
 0582            |> append ")"
 0583            |> ignore
 584
 0585            this.generateForeignKeyAnnotations fk sb |> ignore
 586
 0587            if fk.PrincipalKey <> fk.PrincipalEntityType.FindPrimaryKey() then
 0588                sb
 0589                |> appendEmptyLine
 0590                |> append ".HasPrincipalKey("
 0591                |> append (String.Join(", ", (literalPropNames fk.PrincipalKey.Properties)))
 0592                |> append ")"
 0593                |> ignore
 594
 0595        if not fk.IsOwnership then
 0596            if fk.DeleteBehavior <> DeleteBehavior.ClientSetNull then
 0597                sb
 0598                |> appendEmptyLine
 0599                |> append ".OnDelete("
 0600                |> append (fk.DeleteBehavior |> code.Literal)
 0601                |> append ")"
 0602                |> ignore
 603
 0604            if fk.IsRequired then
 0605                sb
 0606                |> appendEmptyLine
 0607                |> append ".IsRequired()"
 0608                |> ignore
 609
 0610        sb
 0611        |> appendLine " |> ignore"
 0612        |> unindent
 613
 614    member private this.generateForeignKeys funcId (foreignKeys: IForeignKey seq) sb =
 0615        foreignKeys
 0616        |> Seq.iter (fun fk -> this.generateForeignKey funcId fk sb |> ignore)
 0617        sb
 618
 619    member private this.generateOwnedType funcId (ownership: IForeignKey) (sb:IndentedStringBuilder) =
 0620        this.generateEntityType funcId ownership.DeclaringEntityType sb
 621
 622    member private this.generateOwnedTypes funcId (ownerships: IForeignKey seq) (sb:IndentedStringBuilder) =
 0623        ownerships |> Seq.iter (fun o -> this.generateOwnedType funcId o sb)
 0624        sb
 625
 626    member private this.generateRelationships (funcId: string) (entityType:IEntityType) (sb:IndentedStringBuilder) =
 0627        sb
 0628            |> this.generateForeignKeys funcId (getDeclaredForeignKeys entityType)
 0629            |> this.generateOwnedTypes funcId (entityType |> getDeclaredReferencingForeignKeys |> Seq.filter(fun fk -> f
 630
 631    member private this.generateData builderName (properties: IProperty seq) (data : IDictionary<string, obj> seq) (sb:I
 0632        if Seq.isEmpty data then
 0633            sb
 634        else
 0635            let propsToOutput = properties |> Seq.toList
 636
 0637            sb
 0638            |> appendEmptyLine
 0639            |> appendLine (sprintf "%s.HasData([| " builderName)
 0640            |> indent
 0641            |> processDataItems data propsToOutput
 0642            |> unindent
 0643            |> appendLine " |])"
 644
 645    member private this.generateEntityType (builderName:string) (entityType: IEntityType) (sb:IndentedStringBuilder) =
 646
 0647        let ownership = findOwnership entityType
 648
 649        let ownerNav =
 0650            if isNull ownership then
 0651                None
 652            else
 0653                Some ownership.PrincipalToDependent.Name
 654
 655        let declaration =
 0656            match ownerNav with
 657            | None ->
 0658                sprintf ".Entity(%s" (entityType.Name |> code.Literal)
 659            | Some o ->
 0660                if ownership.IsUnique then
 0661                    sprintf ".OwnsOne(%s, %s" (entityType.Name |> code.Literal) (o |> code.Literal)
 662                else
 0663                    sprintf ".OwnsMany(%s, %s" (entityType.Name |> code.Literal) (o |> code.Literal)
 664
 0665        let funcId = "b"
 666
 0667        sb
 0668            |> appendEmptyLine
 0669            |> append builderName
 0670            |> append declaration
 0671            |> append ", (fun " |> append funcId |> appendLine " ->"
 0672            |> indent
 0673            |> generateBaseType funcId entityType.BaseType
 0674            |> generateProperties funcId (entityType |> getDeclaredProperties)
 0675            |>
 0676                match ownerNav with
 0677                | Some _ -> id
 0678                | None -> generateKeys funcId (entityType |> getDeclaredKeys) (entityType |> findDeclaredPrimaryKey)
 0679            |> generateIndexes funcId (entityType |> getDeclaredIndexes)
 0680            |> this.generateEntityTypeAnnotations funcId entityType
 0681            |>
 0682                match ownerNav with
 0683                | None -> id
 0684                | Some _ -> this.generateRelationships funcId entityType
 0685            |> this.generateData funcId (entityType.GetProperties()) (entityType |> getData true)
 0686            |> unindent
 0687            |> appendEmptyLine
 0688            |> appendLine ")) |> ignore"
 0689            |> ignore
 690
 691    member private this.generateEntityTypeRelationships builderName (entityType: IEntityType) (sb:IndentedStringBuilder)
 692
 0693        sb
 0694            |> appendEmptyLine
 0695            |> append builderName
 0696            |> append ".Entity("
 0697            |> append (entityType.Name |> code.Literal)
 0698            |> appendLine(", (fun b ->")
 0699            |> indent
 0700            |> this.generateRelationships "b" entityType
 0701            |> unindent
 0702            |> appendLine ")) |> ignore"
 0703            |> ignore
 704
 705
 706    member private this.generateEntityTypes builderName (entities: IEntityType list) (sb:IndentedStringBuilder) =
 707
 0708        let entitiesToWrite =
 0709            entities |> Seq.filter (fun e -> (e.HasDefiningNavigation() |> not) && (e |> findOwnership |> isNull))
 710
 0711        entitiesToWrite
 0712            |> Seq.iter(fun e -> this.generateEntityType builderName e sb)
 713
 0714        let relationships =
 0715            entitiesToWrite
 0716            |> Seq.filter(fun e -> (e |> getDeclaredForeignKeys |> Seq.isEmpty |> not) || (e |> getDeclaredReferencingFo
 717
 0718        relationships |> Seq.iter(fun e -> this.generateEntityTypeRelationships builderName e sb)
 719
 0720        sb
 721
 722    member private this.generate (builderName:string) (model:IModel) (sb:IndentedStringBuilder) =
 723
 0724        let annotations = getAnnotations model
 725
 0726        if annotations |> Seq.isEmpty |> not then
 0727            sb
 0728                |> append builderName
 0729                |> indent
 0730                |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.DefaultSchema Option.None "HasDe
 0731                |> ignoreAnnotationTypes annotations RelationalAnnotationNames.DbFunction
 0732                |> ignoreAnnotationTypes annotations ChangeDetector.SkipDetectChangesAnnotation
 0733                |> ignoreAnnotationTypes annotations CoreAnnotationNames.ChangeTrackingStrategy
 0734                |> ignoreAnnotationTypes annotations CoreAnnotationNames.OwnedTypes
 0735                |> ignoreAnnotationTypes annotations RelationalAnnotationNames.CheckConstraints
 0736                |> generateAnnotations annotations
 0737                |> appendLine " |> ignore"
 0738                |> unindent
 0739                |> ignore
 740
 0741        let sortedEntities =
 0742            model.GetEntityTypes()
 0743            |> Seq.filter(fun et -> not (et.IsIgnoredByMigrations()))
 0744            |> Seq.toList
 0745            |> sort
 746
 0747        sb |> this.generateEntityTypes builderName sortedEntities |> ignore
 748
 749    interface Microsoft.EntityFrameworkCore.Migrations.Design.ICSharpSnapshotGenerator with
 750        member this.Generate(builderName, model, stringBuilder) =
 0751            this.generate builderName model stringBuilder
-
-
-
-

Methods/Properties

-.ctor(Microsoft.EntityFrameworkCore.Design.ICSharpHelper,Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMappingSource)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(System.Boolean)
-Invoke(System.Type)
-Invoke(System.Type)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(System.Boolean)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-GenerateNext(System.Collections.Generic.IEnumerable`1<System.String>&)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(System.Boolean)
-Invoke(Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter,Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IKey)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IIndex)
-Invoke(System.Boolean,Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-Invoke(System.Collections.Generic.IDictionary`2<System.String,System.Object>)
-generatePropertyAnnotations()
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-generateEntityTypeAnnotations(System.String,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-Invoke(System.String)
-Invoke(Microsoft.FSharp.Core.FSharpOption`1<Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation>)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotation)
-generateForeignKeyAnnotations(Microsoft.EntityFrameworkCore.Metadata.IForeignKey,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Metadata.IProperty>)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IProperty)
-generateForeignKey(System.String,Microsoft.EntityFrameworkCore.Metadata.IForeignKey,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-generateForeignKeys(System.String,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Metadata.IForeignKey>,a)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-generateOwnedType(System.String,Microsoft.EntityFrameworkCore.Metadata.IForeignKey,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-generateOwnedTypes(System.String,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Metadata.IForeignKey>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-generateRelationships(System.String,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-generateData(System.String,System.Collections.Generic.IEnumerable`1<Microsoft.EntityFrameworkCore.Metadata.IProperty>,System.Collections.Generic.IEnumerable`1<System.Collections.Generic.IDictionary`2<System.String,System.Object>>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-generateEntityType(System.String,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(System.String)
-Invoke(System.String)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-generateEntityTypeRelationships(System.String,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-generateEntityTypes(System.String,Microsoft.FSharp.Collections.FSharpList`1<Microsoft.EntityFrameworkCore.Metadata.IEntityType>,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IForeignKey)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-generate(System.String,Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-Invoke(Microsoft.EntityFrameworkCore.Infrastructure.IAnnotatable)
-Invoke(Microsoft.EntityFrameworkCore.Metadata.IEntityType)
-Microsoft-EntityFrameworkCore-Migrations-Design-ICSharpSnapshotGenerator-Generate(System.String,Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_FSharpUtilities.htm b/docs/coverage/EntityFrameworkCore.FSharp_FSharpUtilities.htm deleted file mode 100644 index 0d70691..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_FSharpUtilities.htm +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Internal.FSharpUtilities - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Internal.FSharpUtilities
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Internal/FSharpUtilities.fs
Covered lines:31
Uncovered lines:30
Coverable lines:61
Total lines:261
Line coverage:50.8% (31 of 61)
Covered branches:22
Total branches:50
Branch coverage:44% (22 of 50)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
escapeString(...)10100%0%1
escapeVerbatimString(...)10100%0%1
generateLiteralByteArray(...)100%0%0
generateLiteralBool(...)2266.67%66.67%2.15
generateLiteralInt32(...)10100%0%1
generateLiteralInt64(...)100%0%0
generateLiteralDecimal(...)100%0%0
generateLiteralFloat32(...)100%0%0
generateLiteralDouble(...)100%0%0
generateLiteralTimeSpan(...)100%0%0
generateLiteralDateTime(...)200%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
generateLiteralDateTimeOffset(...)100%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
generateLiteralGuid(...)300%0%0
generateLiteralString(...)100%0%0
generateLiteralVerbatimString(...)100%0%0
generateLiteralObject(...)220%0%0
Invoke(...)100%0%0
Invoke(...)100%0%0
isKeyword(...)520%0%0
handleMethodCallCodeFragment(...)100%0%0
delimitString(...)22100%100%2
getTypeName(...)1151288.89%84.21%11.17
Invoke(...)3266.67%66.67%3.33
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
generateLiteral(...)132220%17.39%99.53
generate(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
Invoke(...)10100%0%1
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Internal/FSharpUtilities.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp.Internal
 2
 3open System
 4open System.Globalization
 5open System.Reflection
 6open System.Text
 7open Microsoft.EntityFrameworkCore.Design
 8
 9open EntityFrameworkCore.FSharp.SharedTypeExtensions
 10open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
 11
 12module FSharpUtilities =
 13
 14    let private _primitiveTypeNames =
 15        [
 16            (typeof<bool>, "bool")
 17            (typeof<byte>, "byte")
 18            (typeof<byte[]>, "byte[]")
 19            (typeof<sbyte>, "sbyte")
 20            (typeof<char>, "char")
 21            (typeof<int16>, "Int16")
 22            (typeof<int>, "int")
 23            (typeof<int64>, "Int64")
 24            (typeof<uint16>, "UInt16")
 25            (typeof<uint32>, "UInt32")
 26            (typeof<uint64>, "UInt64")
 27            (typeof<decimal>, "decimal")
 28            (typeof<float>, "float")
 29            (typeof<double>, "double")
 30            (typeof<string>, "string")
 31            (typeof<obj>, "obj")
 32        ] |> dict
 33
 34    let private _fsharpTypeNames =
 35        [
 36            ("IEnumerable", "seq")
 37            ("FSharpList", "list")
 38            ("FSharpOption", "option")
 39            ("List", "ResizeArray")
 40        ] |> dict
 41
 42    let private escapeString (str: string) =
 343        str.Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("\t", "\\t")
 44
 45    let private escapeVerbatimString (str: string) =
 146        str.Replace("\"", "\"\"")
 47
 48    let private generateLiteralByteArray (value : byte array) =
 049        "new byte[] {" + String.Join(", ", value) + "}"
 50
 51    let private generateLiteralBool (value: bool) =
 452        if value then "true" else "false"
 53
 54    let private generateLiteralInt32 (value: int) =
 155        value.ToString(CultureInfo.InvariantCulture)
 56
 57    let private generateLiteralInt64 (value: Int64) =
 058        value.ToString(CultureInfo.InvariantCulture) + "L"
 59
 60    let private generateLiteralDecimal (value: decimal) =
 061        value.ToString(CultureInfo.InvariantCulture) + "m"
 62
 63    let private generateLiteralFloat32 (value: float32) =
 064        sprintf "(float32 %s)" (value.ToString(CultureInfo.InvariantCulture))
 65
 66    let private generateLiteralDouble (value: double) =
 067        sprintf "(double %s)" (value.ToString(CultureInfo.InvariantCulture))
 68
 69    let private generateLiteralTimeSpan (value: TimeSpan) =
 070        sprintf "TimeSpan(%d)" value.Ticks
 71
 72    let private generateLiteralDateTime (value: DateTime) =
 073        sprintf "DateTime(%d, DateTimeKind.%s)" value.Ticks (Enum.GetName(typedefof<DateTimeKind>, value.Kind))
 74
 75    let private generateLiteralDateTimeOffset (value: DateTimeOffset) =
 076        sprintf "DateTimeOffset(%d, TimeSpan(%d))" value.Ticks value.Offset.Ticks
 77
 78    let private generateLiteralGuid (value: Guid) =
 079        sprintf "Guid(%s)" (value |> string)
 80
 81    let private generateLiteralString (value:string) =
 082        sprintf "\"%s\"" (value |> escapeString)
 83
 84    let private generateLiteralVerbatimString (value:string) =
 085        sprintf "@\"%s\"" (value |> escapeVerbatimString)
 86
 87    let private generateLiteralObject (value: obj) =
 088        let valType = value.GetType()
 089        if valType.GetTypeInfo().IsEnum then
 090            sprintf "%s.%s" valType.Name (Enum.Format(valType, value, "G"))
 91        else
 092            String.Format(CultureInfo.InvariantCulture, "{0}", value)
 93
 94
 95    let private _keywords =
 96        [|
 97            "abstract";
 98            "and";
 99            "as";
 100            "asr";
 101            "assert";
 102            "atomic";
 103            "base";
 104            "begin";
 105            "break";
 106            "checked";
 107            "class";
 108            "component";
 109            "const";
 110            "constraint";
 111            "constructor";
 112            "continue";
 113            "default";
 114            "delegate";
 115            "do";
 116            "done";
 117            "downcast";
 118            "downto";
 119            "eager";
 120            "elif";
 121            "else if";
 122            "else";
 123            "end";
 124            "event";
 125            "exception";
 126            "extern";
 127            "external";
 128            "false";
 129            "finally";
 130            "fixed";
 131            "for";
 132            "fun";
 133            "function";
 134            "functor";
 135            "global";
 136            "if";
 137            "in";
 138            "include";
 139            "inherit";
 140            "inline";
 141            "interface";
 142            "internal";
 143            "land";
 144            "lazy";
 145            "let!";
 146            "let";
 147            "lor";
 148            "lsl";
 149            "lsr";
 150            "lxor";
 151            "match";
 152            "member";
 153            "method";
 154            "mixin";
 155            "mod";
 156            "module";
 157            "mutable";
 158            "namespace";
 159            "new";
 160            "not struct";
 161            "not";
 162            "null";
 163            "object";
 164            "of";
 165            "open";
 166            "or";
 167            "override";
 168            "parallel";
 169            "private";
 170            "process";
 171            "protected";
 172            "public";
 173            "pure";
 174            "rec";
 175            "return!";
 176            "return";
 177            "sealed";
 178            "select";
 179            "sig";
 180            "static";
 181            "struct";
 182            "tailcall";
 183            "then";
 184            "to";
 185            "trait";
 186            "true";
 187            "try";
 188            "type";
 189            "upcast";
 190            "use!";
 191            "use";
 192            "val";
 193            "virtual";
 194            "void";
 195            "volatile"
 196            "when";
 197            "while";
 198            "with";
 199            "yield!";
 200            "yield";
 201          |]
 202
 203    let isKeyword str =
 0204        _keywords |> Seq.contains str
 205
 206    let handleMethodCallCodeFragment (sb:StringBuilder) (methodCallCodeFragment: MethodCallCodeFragment) =
 0207        sb.Append("(").Append(methodCallCodeFragment.Method).Append(")")
 208
 209    let delimitString (str: string) =
 4210        if str.Contains(Environment.NewLine) then
 1211            str |> escapeVerbatimString |> sprintf "@\"%s\""
 212        else
 3213            str |> escapeString |> sprintf "\"%s\""
 214
 215    let rec getTypeName (t:Type) =
 27216        if isNull t then
 0217            failwith "t is null"
 27218        elif t.IsArray then
 1219            sprintf "%s[]" (t.GetElementType() |> getTypeName)
 26220        elif t.GetTypeInfo().IsGenericType then
 17221            if t |> isNullableType then sprintf "Nullable<%s>" (t |> unwrapNullableType |> getTypeName)
 14222            elif t |> isOptionType then sprintf "%s option" (t |> unwrapOptionType |> getTypeName)
 223            else
 8224                let genericTypeDefName = t.Name.Substring(0, t.Name.IndexOf('`'))
 8225                let args =
 8226                    t.GenericTypeArguments
 35227                    |> Array.map (fun t' -> if isNull t' then failwithf "%s has a null arg" t.Name else t' |> getTypeNam
 8228                    |> join ", "
 229
 8230                match _fsharpTypeNames.TryGetValue genericTypeDefName with
 21231                | true, value -> sprintf "%s %s" args value
 3232                | _ -> sprintf "%s<%s>" genericTypeDefName args
 233        else
 12234            match _primitiveTypeNames.TryGetValue t with
 12235            | true, value -> value
 0236            | _ -> t.Name
 237
 238    let generateLiteral(literal:obj) =
 6239        match literal with
 0240        | :? (byte array) as literal' -> generateLiteralByteArray(literal')
 2241        | :? bool as literal' -> generateLiteralBool(literal')
 1242        | :? int as literal' -> generateLiteralInt32(literal')
 0243        | :? Int64 as literal' -> generateLiteralInt64(literal')
 0244        | :? decimal as literal' -> generateLiteralDecimal(literal')
 0245        | :? float32 as literal' -> generateLiteralFloat32(literal')
 0246        | :? double as literal' -> generateLiteralDouble(literal')
 0247        | :? TimeSpan as literal' -> generateLiteralTimeSpan(literal')
 0248        | :? DateTime as literal' -> generateLiteralDateTime(literal')
 0249        | :? DateTimeOffset as literal' -> generateLiteralDateTimeOffset(literal')
 0250        | :? Guid as literal' -> generateLiteralGuid(literal')
 0251        | :? string as literal' -> generateLiteralString(literal')
 0252        | _ -> generateLiteralObject(literal)
 253
 254
 255    let generate (methodCallCodeFragment: MethodCallCodeFragment) =
 2256        let parameters =
 2257            methodCallCodeFragment.Arguments
 5258            |> Seq.map generateLiteral
 2259            |> join ", "
 260
 6261        sprintf ".%s(%s)" methodCallCodeFragment.Method parameters
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_IndentedStringBuilderUtilities.htm b/docs/coverage/EntityFrameworkCore.FSharp_IndentedStringBuilderUtilities.htm deleted file mode 100644 index 32faed0..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_IndentedStringBuilderUtilities.htm +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Utilities/IndentedStringBuilderUtilities.fs
Covered lines:17
Uncovered lines:13
Coverable lines:30
Total lines:73
Line coverage:56.6% (17 of 30)
Covered branches:4
Total branches:10
Branch coverage:40% (4 of 10)
-

Metrics

- - - - - - - - - - - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
notNull(...)20100%0%2
join(...)22100%100%2
Invoke(...)10100%0%1
append(...)10100%0%1
appendLine(...)10100%0%1
appendEmptyLine(...)10100%0%1
appendIfTrue(...)22100%100%2
appendLineIfTrue(...)220%0%0
prependLine(...)220%0%0
appendLines(...)220%0%0
Invoke(...)100%0%0
appendLineIndent(...)10100%0%1
Invoke(...)10100%0%1
indent(...)10100%0%1
unindent(...)10100%0%1
writeNamespaces(...)10100%0%1
Invoke(...)10100%0%1
appendAutoGeneratedTag(...)100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Utilities/IndentedStringBuilderUtilities.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp
 2
 3open System
 4open Microsoft.EntityFrameworkCore.Internal
 5
 6module internal IndentedStringBuilderUtilities =
 7
 388    let notNull o = o |> isNull |> not
 9
 10    let join (separator : string) (strings : string seq) =
 1111        if Seq.isEmpty strings then
 112            String.Empty
 13        else
 1214            strings |> Seq.reduce (fun x y -> x + separator + y)
 15
 16    let append (text:string) (sb:IndentedStringBuilder) =
 28217        sb.Append(text)
 18
 19    let appendLine (text:string) (sb:IndentedStringBuilder) =
 15120        sb.AppendLine(text)
 21
 22    let appendEmptyLine sb =
 9223        sb |> appendLine String.Empty
 24
 25    let appendIfTrue truth value b =
 226        if truth then
 127            b |> append value
 28        else
 129            b
 30
 31    let appendLineIfTrue truth value b =
 032        if truth then
 033            b |> appendLine value
 34        else
 035            b
 36
 37    let private prependLine (addLineBreak: bool ref) (text:string) (sb:IndentedStringBuilder) =
 038        if addLineBreak.Value then
 039            sb |> appendEmptyLine |> ignore
 40        else
 041            addLineBreak := true
 42
 043        sb |> append text |> ignore
 44
 45    let appendLines (lines: string seq) skipFinalNewLine (sb:IndentedStringBuilder) =
 46
 047        let addLineBreak = ref false
 48
 049        lines |> Seq.iter(fun l -> sb |> prependLine addLineBreak l)
 50
 051        if skipFinalNewLine then
 052            sb
 53        else
 054            sb |> appendEmptyLine
 55
 56    let appendLineIndent message (sb:IndentedStringBuilder) =
 457        using (sb.Indent())
 858            (fun _ -> sb.AppendLine(message))
 59
 60    let indent (sb:IndentedStringBuilder) =
 1861        sb.IncrementIndent()
 62
 63    let unindent (sb:IndentedStringBuilder) =
 1364        sb.DecrementIndent()
 65
 66    let writeNamespaces namespaces (sb:IndentedStringBuilder) =
 467        namespaces
 1868            |> Seq.iter(fun n -> sb |> appendLine ("open " + n) |> ignore)
 469        sb
 70
 71    let appendAutoGeneratedTag (sb:IndentedStringBuilder) =
 072        sb |> appendLine "// <auto-generated />"
 73
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_OptionConverter_1.htm b/docs/coverage/EntityFrameworkCore.FSharp_OptionConverter_1.htm deleted file mode 100644 index 9d88574..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_OptionConverter_1.htm +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.OptionConverter`1 - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.OptionConverter`1
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/ValueConverters/Converters.fs
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:21
Line coverage:0% (0 of 3)
Covered branches:0
Total branches:0
-

Metrics

- - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
.ctor()100%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/ValueConverters/Converters.fs

- - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp
 2
 3module Conversion =
 4
 5  open Microsoft.FSharp.Linq.RuntimeHelpers
 6  open System
 7  open System.Linq.Expressions
 8
 9  let toOption<'T> =
 10    <@ Func<'T, 'T option>(fun (x : 'T) -> match box x with null -> None | _ -> Some x) @>
 11    |> LeafExpressionConverter.QuotationToExpression
 12    |> unbox<Expression<Func<'T, 'T option>>>
 13
 14  let fromOption<'T> =
 15    <@ Func<'T option, 'T>(fun (x : 'T option) -> match x with Some y -> y | None -> Unchecked.defaultof<'T>) @>
 16    |> LeafExpressionConverter.QuotationToExpression
 17    |> unbox<Expression<Func<'T option, 'T>>>
 18
 019type OptionConverter<'T> () =
 020  inherit Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'T option, 'T>
 021            (Conversion.fromOption, Conversion.toOption)
-
-
-
-

Methods/Properties

-.ctor()
-
-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_ScaffoldingTypes.htm b/docs/coverage/EntityFrameworkCore.FSharp_ScaffoldingTypes.htm deleted file mode 100644 index eb64833..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_ScaffoldingTypes.htm +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes
Assembly:EntityFrameworkCore.FSharp
File(s):
Covered lines:0
Uncovered lines:0
Coverable lines:0
Total lines:0
Line coverage:
Covered branches:0
Total branches:0
-

File(s)

-

No files found. This usually happens if a file isn't covered by a test or the class does not contain any sequence points (e.g. a class that only contains auto properties).

-
- - \ No newline at end of file diff --git a/docs/coverage/EntityFrameworkCore.FSharp_SharedTypeExtensions.htm b/docs/coverage/EntityFrameworkCore.FSharp_SharedTypeExtensions.htm deleted file mode 100644 index dfaa0fb..0000000 --- a/docs/coverage/EntityFrameworkCore.FSharp_SharedTypeExtensions.htm +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - -EntityFrameworkCore.FSharp.SharedTypeExtensions - Coverage Report - -
-

< Summary

- ---- - - - - - - - - - - - - - -
Class:EntityFrameworkCore.FSharp.SharedTypeExtensions
Assembly:EntityFrameworkCore.FSharp
File(s):/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs
Covered lines:4
Uncovered lines:16
Coverable lines:20
Total lines:69
Line coverage:20% (4 of 20)
Covered branches:2
Total branches:14
Branch coverage:14.2% (2 of 14)
-

Metrics

- - - - - - - - - - - - - -
MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage Crap Score
isValidEntityType(...)100%0%0
isNullableType(...)30100%0%3
isOptionType(...)30100%0%3
unwrapNullableType(...)2266.67%66.67%2.15
unwrapOptionType(...)2266.67%66.67%2.15
makeNullable(...)440%0%0
unwrapEnumType(...)480%0%0
isInteger(...)900%0%0
isNumeric(...)400%0%0
-

File(s)

-

/home/simon/src/EFCore.FSharp/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#LineLine coverage
 1namespace EntityFrameworkCore.FSharp
 2
 3open System
 4open System.Reflection
 5
 6module internal SharedTypeExtensions =
 7
 8    let isValidEntityType (t:Type) =
 09            t.GetTypeInfo().IsClass
 10
 11    let isNullableType (t:Type) =
 1712        let typeInfo = t.GetTypeInfo()
 13        typeInfo.IsGenericType
 14        && typeInfo.GetGenericTypeDefinition() = typedefof<Nullable<_>>
 15
 16    let isOptionType (t:Type) =
 1417        let typeInfo = t.GetTypeInfo()
 18        typeInfo.IsGenericType
 19        && typeInfo.GetGenericTypeDefinition() = typedefof<Option<_>>
 20
 21    let unwrapNullableType (t:Type) =
 622        if isNullableType t then Nullable.GetUnderlyingType t else t
 23
 24    let unwrapOptionType (t:Type) =
 625        if isOptionType t then t.GenericTypeArguments.[0] else t
 26
 27    let makeNullable (nullable : bool) (t : Type) =
 028        if isNullableType t = nullable then
 029            t
 30        else
 031            if nullable then
 032                typedefof<Nullable<_>>.MakeGenericType(t)
 033            else unwrapNullableType t
 34
 35    let unwrapEnumType (t:Type) =
 036        let isNullable = isNullableType t
 37
 38        let underlyingNonNullableType =
 039            if isNullable then unwrapNullableType t else t
 40
 041        if not (underlyingNonNullableType.GetTypeInfo()).IsEnum then
 042            t
 43        else
 044            let underlyingEnumType = Enum.GetUnderlyingType(underlyingNonNullableType)
 045            if isNullable then
 046                makeNullable true underlyingEnumType
 47            else
 048                underlyingEnumType
 49
 50    let isInteger (t:Type) =
 051        let t' = t |> unwrapNullableType |> unwrapOptionType
 52        t' = typeof<int>
 53            || t' = typeof<int64>
 54            || t' = typeof<int16>
 55            || t' = typeof<byte>
 56            || t' = typeof<uint32>
 57            || t' = typeof<uint64>
 58            || t' = typeof<uint16>
 59            || t' = typeof<sbyte>
 60            || t' = typeof<char>
 61
 62    let isNumeric (t:Type) =
 063        let t' = t |> unwrapNullableType |> unwrapOptionType
 64
 65        (isInteger t')
 66            || t' = typeof<decimal>
 67            || t' = typeof<float>
 68            || t' = typeof<float32>
 69
-
-
- - \ No newline at end of file diff --git a/docs/coverage/class.js b/docs/coverage/class.js deleted file mode 100644 index dafc9a5..0000000 --- a/docs/coverage/class.js +++ /dev/null @@ -1,221 +0,0 @@ -/* Chartist.js 0.11.0 - * Copyright © 2017 Gion Kunz - * Free to use under either the WTFPL license or the MIT license. - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT - */ - -!function (a, b) { "function" == typeof define && define.amd ? define("Chartist", [], function () { return a.Chartist = b() }) : "object" == typeof module && module.exports ? module.exports = b() : a.Chartist = b() }(this, function () { - var a = { version: "0.11.0" }; return function (a, b, c) { "use strict"; c.namespaces = { svg: "http://www.w3.org/2000/svg", xmlns: "http://www.w3.org/2000/xmlns/", xhtml: "http://www.w3.org/1999/xhtml", xlink: "http://www.w3.org/1999/xlink", ct: "http://gionkunz.github.com/chartist-js/ct" }, c.noop = function (a) { return a }, c.alphaNumerate = function (a) { return String.fromCharCode(97 + a % 26) }, c.extend = function (a) { var b, d, e; for (a = a || {}, b = 1; b < arguments.length; b++) { d = arguments[b]; for (var f in d) e = d[f], "object" != typeof e || null === e || e instanceof Array ? a[f] = e : a[f] = c.extend(a[f], e) } return a }, c.replaceAll = function (a, b, c) { return a.replace(new RegExp(b, "g"), c) }, c.ensureUnit = function (a, b) { return "number" == typeof a && (a += b), a }, c.quantity = function (a) { if ("string" == typeof a) { var b = /^(\d+)\s*(.*)$/g.exec(a); return { value: +b[1], unit: b[2] || void 0 } } return { value: a } }, c.querySelector = function (a) { return a instanceof Node ? a : b.querySelector(a) }, c.times = function (a) { return Array.apply(null, new Array(a)) }, c.sum = function (a, b) { return a + (b ? b : 0) }, c.mapMultiply = function (a) { return function (b) { return b * a } }, c.mapAdd = function (a) { return function (b) { return b + a } }, c.serialMap = function (a, b) { var d = [], e = Math.max.apply(null, a.map(function (a) { return a.length })); return c.times(e).forEach(function (c, e) { var f = a.map(function (a) { return a[e] }); d[e] = b.apply(null, f) }), d }, c.roundWithPrecision = function (a, b) { var d = Math.pow(10, b || c.precision); return Math.round(a * d) / d }, c.precision = 8, c.escapingMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, c.serialize = function (a) { return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == typeof a && (a = JSON.stringify({ data: a })), Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, b, c.escapingMap[b]) }, a)) }, c.deserialize = function (a) { if ("string" != typeof a) return a; a = Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, c.escapingMap[b], b) }, a); try { a = JSON.parse(a), a = void 0 !== a.data ? a.data : a } catch (b) { } return a }, c.createSvg = function (a, b, d, e) { var f; return b = b || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) { return a.getAttributeNS(c.namespaces.xmlns, "ct") }).forEach(function (b) { a.removeChild(b) }), f = new c.Svg("svg").attr({ width: b, height: d }).addClass(e), f._node.style.width = b, f._node.style.height = d, a.appendChild(f._node), f }, c.normalizeData = function (a, b, d) { var e, f = { raw: a, normalized: {} }; return f.normalized.series = c.getDataArray({ series: a.series || [] }, b, d), e = f.normalized.series.every(function (a) { return a instanceof Array }) ? Math.max.apply(null, f.normalized.series.map(function (a) { return a.length })) : f.normalized.series.length, f.normalized.labels = (a.labels || []).slice(), Array.prototype.push.apply(f.normalized.labels, c.times(Math.max(0, e - f.normalized.labels.length)).map(function () { return "" })), b && c.reverseData(f.normalized), f }, c.safeHasProperty = function (a, b) { return null !== a && "object" == typeof a && a.hasOwnProperty(b) }, c.isDataHoleValue = function (a) { return null === a || void 0 === a || "number" == typeof a && isNaN(a) }, c.reverseData = function (a) { a.labels.reverse(), a.series.reverse(); for (var b = 0; b < a.series.length; b++)"object" == typeof a.series[b] && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse() }, c.getDataArray = function (a, b, d) { function e(a) { if (c.safeHasProperty(a, "value")) return e(a.value); if (c.safeHasProperty(a, "data")) return e(a.data); if (a instanceof Array) return a.map(e); if (!c.isDataHoleValue(a)) { if (d) { var b = {}; return "string" == typeof d ? b[d] = c.getNumberOrUndefined(a) : b.y = c.getNumberOrUndefined(a), b.x = a.hasOwnProperty("x") ? c.getNumberOrUndefined(a.x) : b.x, b.y = a.hasOwnProperty("y") ? c.getNumberOrUndefined(a.y) : b.y, b } return c.getNumberOrUndefined(a) } } return a.series.map(e) }, c.normalizePadding = function (a, b) { return b = b || 0, "number" == typeof a ? { top: a, right: a, bottom: a, left: a } : { top: "number" == typeof a.top ? a.top : b, right: "number" == typeof a.right ? a.right : b, bottom: "number" == typeof a.bottom ? a.bottom : b, left: "number" == typeof a.left ? a.left : b } }, c.getMetaData = function (a, b) { var c = a.data ? a.data[b] : a[b]; return c ? c.meta : void 0 }, c.orderOfMagnitude = function (a) { return Math.floor(Math.log(Math.abs(a)) / Math.LN10) }, c.projectLength = function (a, b, c) { return b / c.range * a }, c.getAvailableHeight = function (a, b) { return Math.max((c.quantity(b.height).value || a.height()) - (b.chartPadding.top + b.chartPadding.bottom) - b.axisX.offset, 0) }, c.getHighLow = function (a, b, d) { function e(a) { if (void 0 !== a) if (a instanceof Array) for (var b = 0; b < a.length; b++)e(a[b]); else { var c = d ? +a[d] : +a; g && c > f.high && (f.high = c), h && c < f.low && (f.low = c) } } b = c.extend({}, b, d ? b["axis" + d.toUpperCase()] : {}); var f = { high: void 0 === b.high ? -Number.MAX_VALUE : +b.high, low: void 0 === b.low ? Number.MAX_VALUE : +b.low }, g = void 0 === b.high, h = void 0 === b.low; return (g || h) && e(a), (b.referenceValue || 0 === b.referenceValue) && (f.high = Math.max(b.referenceValue, f.high), f.low = Math.min(b.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.high > 0 ? f.low = 0 : (f.high = 1, f.low = 0)), f }, c.isNumeric = function (a) { return null !== a && isFinite(a) }, c.isFalseyButZero = function (a) { return !a && 0 !== a }, c.getNumberOrUndefined = function (a) { return c.isNumeric(a) ? +a : void 0 }, c.isMultiValue = function (a) { return "object" == typeof a && ("x" in a || "y" in a) }, c.getMultiValue = function (a, b) { return c.isMultiValue(a) ? c.getNumberOrUndefined(a[b || "y"]) : c.getNumberOrUndefined(a) }, c.rho = function (a) { function b(a, c) { return a % c === 0 ? c : b(c, a % c) } function c(a) { return a * a + 1 } if (1 === a) return a; var d, e = 2, f = 2; if (a % 2 === 0) return 2; do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d); return d }, c.getBounds = function (a, b, d, e) { function f(a, b) { return a === (a += b) && (a *= 1 + (b > 0 ? o : -o)), a } var g, h, i, j = 0, k = { high: b.high, low: b.low }; k.valueRange = k.high - k.low, k.oom = c.orderOfMagnitude(k.valueRange), k.step = Math.pow(10, k.oom), k.min = Math.floor(k.low / k.step) * k.step, k.max = Math.ceil(k.high / k.step) * k.step, k.range = k.max - k.min, k.numberOfSteps = Math.round(k.range / k.step); var l = c.projectLength(a, k.step, k), m = l < d, n = e ? c.rho(k.range) : 0; if (e && c.projectLength(a, 1, k) >= d) k.step = 1; else if (e && n < k.step && c.projectLength(a, n, k) >= d) k.step = n; else for (; ;) { if (m && c.projectLength(a, k.step, k) <= d) k.step *= 2; else { if (m || !(c.projectLength(a, k.step / 2, k) >= d)) break; if (k.step /= 2, e && k.step % 1 !== 0) { k.step *= 2; break } } if (j++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!") } var o = 2.221e-16; for (k.step = Math.max(k.step, o), h = k.min, i = k.max; h + k.step <= k.low;)h = f(h, k.step); for (; i - k.step >= k.high;)i = f(i, -k.step); k.min = h, k.max = i, k.range = k.max - k.min; var p = []; for (g = k.min; g <= k.max; g = f(g, k.step)) { var q = c.roundWithPrecision(g); q !== p[p.length - 1] && p.push(q) } return k.values = p, k }, c.polarToCartesian = function (a, b, c, d) { var e = (d - 90) * Math.PI / 180; return { x: a + c * Math.cos(e), y: b + c * Math.sin(e) } }, c.createChartRect = function (a, b, d) { var e = !(!b.axisX && !b.axisY), f = e ? b.axisY.offset : 0, g = e ? b.axisX.offset : 0, h = a.width() || c.quantity(b.width).value || 0, i = a.height() || c.quantity(b.height).value || 0, j = c.normalizePadding(b.chartPadding, d); h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom); var k = { padding: j, width: function () { return this.x2 - this.x1 }, height: function () { return this.y1 - this.y2 } }; return e ? ("start" === b.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === b.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k }, c.createGrid = function (a, b, d, e, f, g, h, i) { var j = {}; j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f; var k = g.elem("line", j, h.join(" ")); i.emit("draw", c.extend({ type: "grid", axis: d, index: b, group: g, element: k }, j)) }, c.createGridBackground = function (a, b, c, d) { var e = a.elem("rect", { x: b.x1, y: b.y2, width: b.width(), height: b.height() }, c, !0); d.emit("draw", { type: "gridBackground", group: a, element: e }) }, c.createLabel = function (a, d, e, f, g, h, i, j, k, l, m) { var n, o = {}; if (o[g.units.pos] = a + i[g.units.pos], o[g.counterUnits.pos] = i[g.counterUnits.pos], o[g.units.len] = d, o[g.counterUnits.len] = Math.max(0, h - 10), l) { var p = b.createElement("span"); p.className = k.join(" "), p.setAttribute("xmlns", c.namespaces.xhtml), p.innerText = f[e], p.style[g.units.len] = Math.round(o[g.units.len]) + "px", p.style[g.counterUnits.len] = Math.round(o[g.counterUnits.len]) + "px", n = j.foreignObject(p, c.extend({ style: "overflow: visible;" }, o)) } else n = j.elem("text", o, k.join(" ")).text(f[e]); m.emit("draw", c.extend({ type: "label", axis: g, index: e, group: j, element: n, text: f[e] }, o)) }, c.getSeriesOption = function (a, b, c) { if (a.name && b.series && b.series[a.name]) { var d = b.series[a.name]; return d.hasOwnProperty(c) ? d[c] : b[c] } return b[c] }, c.optionsProvider = function (b, d, e) { function f(b) { var f = h; if (h = c.extend({}, j), d) for (i = 0; i < d.length; i++) { var g = a.matchMedia(d[i][0]); g.matches && (h = c.extend(h, d[i][1])) } e && b && e.emit("optionsChanged", { previousOptions: f, currentOptions: h }) } function g() { k.forEach(function (a) { a.removeListener(f) }) } var h, i, j = c.extend({}, b), k = []; if (!a.matchMedia) throw "window.matchMedia not found! Make sure you're using a polyfill."; if (d) for (i = 0; i < d.length; i++) { var l = a.matchMedia(d[i][0]); l.addListener(f), k.push(l) } return f(), { removeMediaQueryListeners: g, getCurrentOptions: function () { return c.extend({}, h) } } }, c.splitIntoSegments = function (a, b, d) { var e = { increasingX: !1, fillHoles: !1 }; d = c.extend({}, e, d); for (var f = [], g = !0, h = 0; h < a.length; h += 2)void 0 === c.getMultiValue(b[h / 2].value) ? d.fillHoles || (g = !0) : (d.increasingX && h >= 2 && a[h] <= a[h - 2] && (g = !0), g && (f.push({ pathCoordinates: [], valueData: [] }), g = !1), f[f.length - 1].pathCoordinates.push(a[h], a[h + 1]), f[f.length - 1].valueData.push(b[h / 2])); return f } }(window, document, a), function (a, b, c) { "use strict"; c.Interpolation = {}, c.Interpolation.none = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e = new c.Svg.Path, f = !0, g = 0; g < b.length; g += 2) { var h = b[g], i = b[g + 1], j = d[g / 2]; void 0 !== c.getMultiValue(j.value) ? (f ? e.move(h, i, !1, j) : e.line(h, i, !1, j), f = !1) : a.fillHoles || (f = !0) } return e } }, c.Interpolation.simple = function (a) { var b = { divisor: 2, fillHoles: !1 }; a = c.extend({}, b, a); var d = 1 / Math.max(1, a.divisor); return function (b, e) { for (var f, g, h, i = new c.Svg.Path, j = 0; j < b.length; j += 2) { var k = b[j], l = b[j + 1], m = (k - f) * d, n = e[j / 2]; void 0 !== n.value ? (void 0 === h ? i.move(k, l, !1, n) : i.curve(f + m, g, k - m, l, k, l, !1, n), f = k, g = l, h = n) : a.fillHoles || (f = k = h = void 0) } return i } }, c.Interpolation.cardinal = function (a) { var b = { tension: 1, fillHoles: !1 }; a = c.extend({}, b, a); var d = Math.min(1, Math.max(0, a.tension)), e = 1 - d; return function f(b, g) { var h = c.splitIntoSegments(b, g, { fillHoles: a.fillHoles }); if (h.length) { if (h.length > 1) { var i = []; return h.forEach(function (a) { i.push(f(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(i) } if (b = h[0].pathCoordinates, g = h[0].valueData, b.length <= 4) return c.Interpolation.none()(b, g); for (var j, k = (new c.Svg.Path).move(b[0], b[1], !1, g[0]), l = 0, m = b.length; m - 2 * !j > l; l += 2) { var n = [{ x: +b[l - 2], y: +b[l - 1] }, { x: +b[l], y: +b[l + 1] }, { x: +b[l + 2], y: +b[l + 3] }, { x: +b[l + 4], y: +b[l + 5] }]; j ? l ? m - 4 === l ? n[3] = { x: +b[0], y: +b[1] } : m - 2 === l && (n[2] = { x: +b[0], y: +b[1] }, n[3] = { x: +b[2], y: +b[3] }) : n[0] = { x: +b[m - 2], y: +b[m - 1] } : m - 4 === l ? n[3] = n[2] : l || (n[0] = { x: +b[l], y: +b[l + 1] }), k.curve(d * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + e * n[2].x, d * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + e * n[2].y, d * (n[1].x + 6 * n[2].x - n[3].x) / 6 + e * n[2].x, d * (n[1].y + 6 * n[2].y - n[3].y) / 6 + e * n[2].y, n[2].x, n[2].y, !1, g[(l + 2) / 2]) } return k } return c.Interpolation.none()([]) } }, c.Interpolation.monotoneCubic = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function d(b, e) { var f = c.splitIntoSegments(b, e, { fillHoles: a.fillHoles, increasingX: !0 }); if (f.length) { if (f.length > 1) { var g = []; return f.forEach(function (a) { g.push(d(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(g) } if (b = f[0].pathCoordinates, e = f[0].valueData, b.length <= 4) return c.Interpolation.none()(b, e); var h, i, j = [], k = [], l = b.length / 2, m = [], n = [], o = [], p = []; for (h = 0; h < l; h++)j[h] = b[2 * h], k[h] = b[2 * h + 1]; for (h = 0; h < l - 1; h++)o[h] = k[h + 1] - k[h], p[h] = j[h + 1] - j[h], n[h] = o[h] / p[h]; for (m[0] = n[0], m[l - 1] = n[l - 2], h = 1; h < l - 1; h++)0 === n[h] || 0 === n[h - 1] || n[h - 1] > 0 != n[h] > 0 ? m[h] = 0 : (m[h] = 3 * (p[h - 1] + p[h]) / ((2 * p[h] + p[h - 1]) / n[h - 1] + (p[h] + 2 * p[h - 1]) / n[h]), isFinite(m[h]) || (m[h] = 0)); for (i = (new c.Svg.Path).move(j[0], k[0], !1, e[0]), h = 0; h < l - 1; h++)i.curve(j[h] + p[h] / 3, k[h] + m[h] * p[h] / 3, j[h + 1] - p[h] / 3, k[h + 1] - m[h + 1] * p[h] / 3, j[h + 1], k[h + 1], !1, e[h + 1]); return i } return c.Interpolation.none()([]) } }, c.Interpolation.step = function (a) { var b = { postpone: !0, fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e, f, g, h = new c.Svg.Path, i = 0; i < b.length; i += 2) { var j = b[i], k = b[i + 1], l = d[i / 2]; void 0 !== l.value ? (void 0 === g ? h.move(j, k, !1, l) : (a.postpone ? h.line(j, f, !1, g) : h.line(e, k, !1, l), h.line(j, k, !1, l)), e = j, f = k, g = l) : a.fillHoles || (e = f = g = void 0) } return h } } }(window, document, a), function (a, b, c) { "use strict"; c.EventEmitter = function () { function a(a, b) { d[a] = d[a] || [], d[a].push(b) } function b(a, b) { d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]) } function c(a, b) { d[a] && d[a].forEach(function (a) { a(b) }), d["*"] && d["*"].forEach(function (c) { c(a, b) }) } var d = []; return { addEventHandler: a, removeEventHandler: b, emit: c } } }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = []; if (a.length) for (var c = 0; c < a.length; c++)b.push(a[c]); return b } function e(a, b) { var d = b || this.prototype || c.Class, e = Object.create(d); c.Class.cloneDefinitions(e, a); var f = function () { var a, b = e.constructor || function () { }; return a = this === c ? Object.create(e) : this, b.apply(a, Array.prototype.slice.call(arguments, 0)), a }; return f.prototype = e, f["super"] = d, f.extend = this.extend, f } function f() { var a = d(arguments), b = a[0]; return a.splice(1, a.length - 1).forEach(function (a) { Object.getOwnPropertyNames(a).forEach(function (c) { delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c)) }) }), b } c.Class = { extend: e, cloneDefinitions: f } }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d) { return a && (this.data = a || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.eventEmitter.emit("data", { type: "update", data: this.data })), b && (this.options = c.extend({}, d ? this.options : this.defaultOptions, b), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this } function e() { return this.initializeTimeoutId ? a.clearTimeout(this.initializeTimeoutId) : (a.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this } function f(a, b) { return this.eventEmitter.addEventHandler(a, b), this } function g(a, b) { return this.eventEmitter.removeEventHandler(a, b), this } function h() { a.addEventListener("resize", this.resizeListener), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () { this.update() }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) { a instanceof Array ? a[0](this, a[1]) : a(this) }.bind(this)), this.eventEmitter.emit("data", { type: "initial", data: this.data }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0 } function i(a, b, d, e, f) { this.container = c.querySelector(a), this.data = b || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = c.EventEmitter(), this.supportsForeignObject = c.Svg.isSupported("Extensibility"), this.supportsAnimations = c.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () { this.update() }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(h.bind(this), 0) } c.Base = c.Class.extend({ constructor: i, optionsProvider: void 0, container: void 0, svg: void 0, eventEmitter: void 0, createChart: function () { throw new Error("Base chart type can't be instantiated!") }, update: d, detach: e, on: f, off: g, version: c.version, supportsForeignObject: !1 }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, d, e, f, g) { a instanceof Element ? this._node = a : (this._node = b.createElementNS(c.namespaces.svg, a), "svg" === a && this.attr({ "xmlns:ct": c.namespaces.ct })), d && this.attr(d), e && this.addClass(e), f && (g && f._node.firstChild ? f._node.insertBefore(this._node, f._node.firstChild) : f._node.appendChild(this._node)) } function e(a, b) { return "string" == typeof a ? b ? this._node.getAttributeNS(b, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (b) { if (void 0 !== a[b]) if (b.indexOf(":") !== -1) { var d = b.split(":"); this._node.setAttributeNS(c.namespaces[d[0]], b, a[b]) } else this._node.setAttribute(b, a[b]) }.bind(this)), this) } function f(a, b, d, e) { return new c.Svg(a, b, d, this, e) } function g() { return this._node.parentNode instanceof SVGElement ? new c.Svg(this._node.parentNode) : null } function h() { for (var a = this._node; "svg" !== a.nodeName;)a = a.parentNode; return new c.Svg(a) } function i(a) { var b = this._node.querySelector(a); return b ? new c.Svg(b) : null } function j(a) { var b = this._node.querySelectorAll(a); return b.length ? new c.Svg.List(b) : null } function k() { return this._node } function l(a, d, e, f) { if ("string" == typeof a) { var g = b.createElement("div"); g.innerHTML = a, a = g.firstChild } a.setAttribute("xmlns", c.namespaces.xmlns); var h = this.elem("foreignObject", d, e, f); return h._node.appendChild(a), h } function m(a) { return this._node.appendChild(b.createTextNode(a)), this } function n() { for (; this._node.firstChild;)this._node.removeChild(this._node.firstChild); return this } function o() { return this._node.parentNode.removeChild(this._node), this.parent() } function p(a) { return this._node.parentNode.replaceChild(a._node, this._node), a } function q(a, b) { return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this } function r() { return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\s+/) : [] } function s(a) { return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function (a, b, c) { return c.indexOf(a) === b }).join(" ")), this } function t(a) { var b = a.trim().split(/\s+/); return this._node.setAttribute("class", this.classes(this._node).filter(function (a) { return b.indexOf(a) === -1 }).join(" ")), this } function u() { return this._node.setAttribute("class", ""), this } function v() { return this._node.getBoundingClientRect().height } function w() { return this._node.getBoundingClientRect().width } function x(a, b, d) { return void 0 === b && (b = !0), Object.keys(a).forEach(function (e) { function f(a, b) { var f, g, h, i = {}; a.easing && (h = a.easing instanceof Array ? a.easing : c.Svg.Easing[a.easing], delete a.easing), a.begin = c.ensureUnit(a.begin, "ms"), a.dur = c.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), b && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = c.quantity(a.begin || 0).value, a.begin = "indefinite"), f = this.elem("animate", c.extend({ attributeName: e }, a)), b && setTimeout(function () { try { f._node.beginElement() } catch (b) { i[e] = a.to, this.attr(i), f.remove() } }.bind(this), g), d && f._node.addEventListener("beginEvent", function () { d.emit("animationBegin", { element: this, animate: f._node, params: a }) }.bind(this)), f._node.addEventListener("endEvent", function () { d && d.emit("animationEnd", { element: this, animate: f._node, params: a }), b && (i[e] = a.to, this.attr(i), f.remove()) }.bind(this)) } a[e] instanceof Array ? a[e].forEach(function (a) { f.bind(this)(a, !1) }.bind(this)) : f.bind(this)(a[e], b) }.bind(this)), this } function y(a) { var b = this; this.svgElements = []; for (var d = 0; d < a.length; d++)this.svgElements.push(new c.Svg(a[d])); Object.keys(c.Svg.prototype).filter(function (a) { return ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a) === -1 }).forEach(function (a) { b[a] = function () { var d = Array.prototype.slice.call(arguments, 0); return b.svgElements.forEach(function (b) { c.Svg.prototype[a].apply(b, d) }), b } }) } c.Svg = c.Class.extend({ constructor: d, attr: e, elem: f, parent: g, root: h, querySelector: i, querySelectorAll: j, getNode: k, foreignObject: l, text: m, empty: n, remove: o, replace: p, append: q, classes: r, addClass: s, removeClass: t, removeAllClasses: u, height: v, width: w, animate: x }), c.Svg.isSupported = function (a) { return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1") }; var z = { easeInSine: [.47, 0, .745, .715], easeOutSine: [.39, .575, .565, 1], easeInOutSine: [.445, .05, .55, .95], easeInQuad: [.55, .085, .68, .53], easeOutQuad: [.25, .46, .45, .94], easeInOutQuad: [.455, .03, .515, .955], easeInCubic: [.55, .055, .675, .19], easeOutCubic: [.215, .61, .355, 1], easeInOutCubic: [.645, .045, .355, 1], easeInQuart: [.895, .03, .685, .22], easeOutQuart: [.165, .84, .44, 1], easeInOutQuart: [.77, 0, .175, 1], easeInQuint: [.755, .05, .855, .06], easeOutQuint: [.23, 1, .32, 1], easeInOutQuint: [.86, 0, .07, 1], easeInExpo: [.95, .05, .795, .035], easeOutExpo: [.19, 1, .22, 1], easeInOutExpo: [1, 0, 0, 1], easeInCirc: [.6, .04, .98, .335], easeOutCirc: [.075, .82, .165, 1], easeInOutCirc: [.785, .135, .15, .86], easeInBack: [.6, -.28, .735, .045], easeOutBack: [.175, .885, .32, 1.275], easeInOutBack: [.68, -.55, .265, 1.55] }; c.Svg.Easing = z, c.Svg.List = c.Class.extend({ constructor: y }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e, f, g) { var h = c.extend({ command: f ? a.toLowerCase() : a.toUpperCase() }, b, g ? { data: g } : {}); d.splice(e, 0, h) } function e(a, b) { a.forEach(function (c, d) { u[c.command.toLowerCase()].forEach(function (e, f) { b(c, e, d, f, a) }) }) } function f(a, b) { this.pathElements = [], this.pos = 0, this.close = a, this.options = c.extend({}, v, b) } function g(a) { return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos } function h(a) { return this.pathElements.splice(this.pos, a), this } function i(a, b, c, e) { return d("M", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function j(a, b, c, e) { return d("L", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function k(a, b, c, e, f, g, h, i) { return d("C", { x1: +a, y1: +b, x2: +c, y2: +e, x: +f, y: +g }, this.pathElements, this.pos++, h, i), this } function l(a, b, c, e, f, g, h, i, j) { return d("A", { rx: +a, ry: +b, xAr: +c, lAf: +e, sf: +f, x: +g, y: +h }, this.pathElements, this.pos++, i, j), this } function m(a) { var b = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\s,]+/).reduce(function (a, b) { return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a }, []); "Z" === b[b.length - 1][0].toUpperCase() && b.pop(); var d = b.map(function (a) { var b = a.shift(), d = u[b.toLowerCase()]; return c.extend({ command: b }, d.reduce(function (b, c, d) { return b[c] = +a[d], b }, {})) }), e = [this.pos, 0]; return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this } function n() { var a = Math.pow(10, this.options.accuracy); return this.pathElements.reduce(function (b, c) { var d = u[c.command.toLowerCase()].map(function (b) { return this.options.accuracy ? Math.round(c[b] * a) / a : c[b] }.bind(this)); return b + c.command + d.join(",") }.bind(this), "") + (this.close ? "Z" : "") } function o(a, b) { return e(this.pathElements, function (c, d) { c[d] *= "x" === d[0] ? a : b }), this } function p(a, b) { return e(this.pathElements, function (c, d) { c[d] += "x" === d[0] ? a : b }), this } function q(a) { return e(this.pathElements, function (b, c, d, e, f) { var g = a(b, c, d, e, f); (g || 0 === g) && (b[c] = g) }), this } function r(a) { var b = new c.Svg.Path(a || this.close); return b.pos = this.pos, b.pathElements = this.pathElements.slice().map(function (a) { return c.extend({}, a) }), b.options = c.extend({}, this.options), b } function s(a) { var b = [new c.Svg.Path]; return this.pathElements.forEach(function (d) { d.command === a.toUpperCase() && 0 !== b[b.length - 1].pathElements.length && b.push(new c.Svg.Path), b[b.length - 1].pathElements.push(d) }), b } function t(a, b, d) { for (var e = new c.Svg.Path(b, d), f = 0; f < a.length; f++)for (var g = a[f], h = 0; h < g.pathElements.length; h++)e.pathElements.push(g.pathElements[h]); return e } var u = { m: ["x", "y"], l: ["x", "y"], c: ["x1", "y1", "x2", "y2", "x", "y"], a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"] }, v = { accuracy: 3 }; c.Svg.Path = c.Class.extend({ constructor: f, position: g, remove: h, move: i, line: j, curve: k, arc: l, scale: o, translate: p, transform: q, parse: m, stringify: n, clone: r, splitByCommand: s }), c.Svg.Path.elementDescriptions = u, c.Svg.Path.join = t }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c, d) { this.units = a, this.counterUnits = a === f.x ? f.y : f.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d } function e(a, b, d, e, f) { var g = e["axis" + this.units.pos.toUpperCase()], h = this.ticks.map(this.projectValue.bind(this)), i = this.ticks.map(g.labelInterpolationFnc); h.forEach(function (j, k) { var l, m = { x: 0, y: 0 }; l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), c.isFalseyButZero(i[k]) && "" !== i[k] || ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && c.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && c.createLabel(j, l, k, i, this, g.offset, m, b, [e.classNames.label, e.classNames[this.units.dir], "start" === g.position ? e.classNames[g.position] : e.classNames.end], d, f)) }.bind(this)) } var f = { x: { pos: "x", len: "width", dir: "horizontal", rectStart: "x1", rectEnd: "x2", rectOffset: "y2" }, y: { pos: "y", len: "height", dir: "vertical", rectStart: "y2", rectEnd: "y1", rectOffset: "x1" } }; c.Axis = c.Class.extend({ constructor: d, createGridAndLabels: e, projectValue: function (a, b, c) { throw new Error("Base axis can't be instantiated!") } }), c.Axis.units = f }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.bounds = c.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = { min: this.bounds.min, max: this.bounds.max }, c.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e) } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range } c.AutoScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.divisor = e.divisor || 1, this.ticks = e.ticks || c.times(this.divisor).map(function (a, b) { return f.low + (f.high - f.low) / this.divisor * b }.bind(this)), this.ticks.sort(function (a, b) { return a - b }), this.range = { min: f.low, max: f.high }, c.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min) } c.FixedScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { c.StepAxis["super"].constructor.call(this, a, d, e.ticks, e); var f = Math.max(1, e.ticks.length - (e.stretch ? 1 : 0)); this.stepLength = this.axisLength / f } function e(a, b) { return this.stepLength * b } c.StepAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = c.normalizeData(this.data, a.reverseData, !0); this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart); var d, e, g = this.svg.elem("g").addClass(a.classNames.gridGroup), h = this.svg.elem("g"), i = this.svg.elem("g").addClass(a.classNames.labelGroup), j = c.createChartRect(this.svg, a, f.padding); d = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, j, c.extend({}, a.axisX, { ticks: b.normalized.labels, stretch: a.fullWidth })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, j, a.axisX), e = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, j, c.extend({}, a.axisY, { high: c.isNumeric(a.high) ? a.high : a.axisY.high, low: c.isNumeric(a.low) ? a.low : a.axisY.low })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), e.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(g, j, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (f, g) { var i = h.elem("g"); i.attr({ "ct:series-name": f.name, "ct:meta": c.serialize(f.meta) }), i.addClass([a.classNames.series, f.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var k = [], l = []; b.normalized.series[g].forEach(function (a, h) { var i = { x: j.x1 + d.projectValue(a, h, b.normalized.series[g]), y: j.y1 - e.projectValue(a, h, b.normalized.series[g]) }; k.push(i.x, i.y), l.push({ value: a, valueIndex: h, meta: c.getMetaData(f, h) }) }.bind(this)); var m = { lineSmooth: c.getSeriesOption(f, a, "lineSmooth"), showPoint: c.getSeriesOption(f, a, "showPoint"), showLine: c.getSeriesOption(f, a, "showLine"), showArea: c.getSeriesOption(f, a, "showArea"), areaBase: c.getSeriesOption(f, a, "areaBase") }, n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? c.Interpolation.monotoneCubic() : c.Interpolation.none(), o = n(k, l); if (m.showPoint && o.pathElements.forEach(function (b) { var h = i.elem("line", { x1: b.x, y1: b.y, x2: b.x + .01, y2: b.y }, a.classNames.point).attr({ "ct:value": [b.data.value.x, b.data.value.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(b.data.meta) }); this.eventEmitter.emit("draw", { type: "point", value: b.data.value, index: b.data.valueIndex, meta: b.data.meta, series: f, seriesIndex: g, axisX: d, axisY: e, group: i, element: h, x: b.x, y: b.y }) }.bind(this)), m.showLine) { var p = i.elem("path", { d: o.stringify() }, a.classNames.line, !0); this.eventEmitter.emit("draw", { type: "line", values: b.normalized.series[g], path: o.clone(), chartRect: j, index: g, series: f, seriesIndex: g, seriesMeta: f.meta, axisX: d, axisY: e, group: i, element: p }) } if (m.showArea && e.range) { var q = Math.max(Math.min(m.areaBase, e.range.max), e.range.min), r = j.y1 - e.projectValue(q); o.splitByCommand("M").filter(function (a) { return a.pathElements.length > 1 }).map(function (a) { var b = a.pathElements[0], c = a.pathElements[a.pathElements.length - 1]; return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r) }).forEach(function (c) { var h = i.elem("path", { d: c.stringify() }, a.classNames.area, !0); this.eventEmitter.emit("draw", { type: "area", values: b.normalized.series[g], path: c.clone(), series: f, seriesIndex: g, axisX: d, axisY: e, chartRect: j, index: g, group: i, element: h }) }.bind(this)) } }.bind(this)), this.eventEmitter.emit("created", { bounds: e.bounds, chartRect: j, axisX: d, axisY: e, svg: this.svg, options: a }) } function e(a, b, d, e) { c.Line["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, showLine: !0, showPoint: !0, showArea: !1, areaBase: 0, lineSmooth: !0, showGridBackground: !1, low: void 0, high: void 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, fullWidth: !1, reverseData: !1, classNames: { chart: "ct-chart-line", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", line: "ct-line", point: "ct-point", area: "ct-area", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Line = c.Base.extend({ constructor: e, createChart: d }) }(window, document, a), function (a, b, c) { - "use strict"; function d(a) { - var b, d; a.distributeSeries ? (b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), b.normalized.series = b.normalized.series.map(function (a) { return [a] })) : b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : "")); var e = this.svg.elem("g").addClass(a.classNames.gridGroup), g = this.svg.elem("g"), h = this.svg.elem("g").addClass(a.classNames.labelGroup); if (a.stackBars && 0 !== b.normalized.series.length) { - var i = c.serialMap(b.normalized.series, function () { - return Array.prototype.slice.call(arguments).map(function (a) { return a }).reduce(function (a, b) { return { x: a.x + (b && b.x) || 0, y: a.y + (b && b.y) || 0 } }, { x: 0, y: 0 }) - }); d = c.getHighLow([i], a, a.horizontalBars ? "x" : "y") - } else d = c.getHighLow(b.normalized.series, a, a.horizontalBars ? "x" : "y"); d.high = +a.high || (0 === a.high ? 0 : d.high), d.low = +a.low || (0 === a.low ? 0 : d.low); var j, k, l, m, n, o = c.createChartRect(this.svg, a, f.padding); k = a.distributeSeries && a.stackBars ? b.normalized.labels.slice(0, 1) : b.normalized.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new c.AutoScaleAxis(c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })), l = n = void 0 === a.axisY.type ? new c.StepAxis(c.Axis.units.y, b.normalized.series, o, { ticks: k }) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, o, { ticks: k }) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, a.axisX), j = n = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 }))); var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0), q = []; l.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(e, o, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (d, e) { var f, h, i = e - (b.raw.series.length - 1) / 2; f = a.distributeSeries && !a.stackBars ? l.axisLength / b.normalized.series.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / b.normalized.series[e].length / 2, h = g.elem("g"), h.attr({ "ct:series-name": d.name, "ct:meta": c.serialize(d.meta) }), h.addClass([a.classNames.series, d.className || a.classNames.series + "-" + c.alphaNumerate(e)].join(" ")), b.normalized.series[e].forEach(function (g, k) { var r, s, t, u; if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? { x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, b.normalized.series[e]), y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, b.normalized.series[e]) } : { x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, b.normalized.series[e]), y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, b.normalized.series[e]) }, l instanceof c.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) { var v = {}; v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], !a.stackBars || "accumulate" !== a.stackMode && a.stackMode ? (v[l.counterUnits.pos + "1"] = p, v[l.counterUnits.pos + "2"] = r[l.counterUnits.pos]) : (v[l.counterUnits.pos + "1"] = t, v[l.counterUnits.pos + "2"] = q[k]), v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1); var w = c.getMetaData(d, k); s = h.elem("line", v, a.classNames.bar).attr({ "ct:value": [g.x, g.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(w) }), this.eventEmitter.emit("draw", c.extend({ type: "bar", value: g, index: k, meta: w, series: d, seriesIndex: e, axisX: m, axisY: n, chartRect: o, group: h, element: s }, v)) } }.bind(this)) }.bind(this)), this.eventEmitter.emit("created", { bounds: j.bounds, chartRect: o, axisX: m, axisY: n, svg: this.svg, options: a }) - } function e(a, b, d, e) { c.Bar["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 30, onlyInteger: !1 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, high: void 0, low: void 0, referenceValue: 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, seriesBarDistance: 15, stackBars: !1, stackMode: "accumulate", horizontalBars: !1, distributeSeries: !1, reverseData: !1, showGridBackground: !1, classNames: { chart: "ct-chart-bar", horizontalBars: "ct-horizontal-bars", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", bar: "ct-bar", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Bar = c.Base.extend({ constructor: e, createChart: d }) - }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c) { var d = b.x > a.x; return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle" } function e(a) { var b, e, f, h, i, j = c.normalizeData(this.data), k = [], l = a.startAngle; this.svg = c.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = c.createChartRect(this.svg, a, g.padding), f = Math.min(e.width() / 2, e.height() / 2), i = a.total || j.normalized.series.reduce(function (a, b) { return a + b }, 0); var m = c.quantity(a.donutWidth); "%" === m.unit && (m.value *= f / 100), f -= a.donut && !a.donutSolid ? m.value / 2 : 0, h = "outside" === a.labelPosition || a.donut && !a.donutSolid ? f : "center" === a.labelPosition ? 0 : a.donutSolid ? f - m.value / 2 : f / 2, h += a.labelOffset; var n = { x: e.x1 + e.width() / 2, y: e.y2 + e.height() / 2 }, o = 1 === j.raw.series.filter(function (a) { return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a }).length; j.raw.series.forEach(function (a, b) { k[b] = this.svg.elem("g", null, null) }.bind(this)), a.showLabel && (b = this.svg.elem("g", null, null)), j.raw.series.forEach(function (e, g) { if (0 !== j.normalized.series[g] || !a.ignoreEmptyValues) { k[g].attr({ "ct:series-name": e.name }), k[g].addClass([a.classNames.series, e.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var p = i > 0 ? l + j.normalized.series[g] / i * 360 : 0, q = Math.max(0, l - (0 === g || o ? 0 : .2)); p - q >= 359.99 && (p = q + 359.99); var r, s, t, u = c.polarToCartesian(n.x, n.y, f, q), v = c.polarToCartesian(n.x, n.y, f, p), w = new c.Svg.Path(!a.donut || a.donutSolid).move(v.x, v.y).arc(f, f, 0, p - l > 180, 0, u.x, u.y); a.donut ? a.donutSolid && (t = f - m.value, r = c.polarToCartesian(n.x, n.y, t, l - (0 === g || o ? 0 : .2)), s = c.polarToCartesian(n.x, n.y, t, p), w.line(r.x, r.y), w.arc(t, t, 0, p - l > 180, 1, s.x, s.y)) : w.line(n.x, n.y); var x = a.classNames.slicePie; a.donut && (x = a.classNames.sliceDonut, a.donutSolid && (x = a.classNames.sliceDonutSolid)); var y = k[g].elem("path", { d: w.stringify() }, x); if (y.attr({ "ct:value": j.normalized.series[g], "ct:meta": c.serialize(e.meta) }), a.donut && !a.donutSolid && (y._node.style.strokeWidth = m.value + "px"), this.eventEmitter.emit("draw", { type: "slice", value: j.normalized.series[g], totalDataSum: i, index: g, meta: e.meta, series: e, group: k[g], element: y, path: w.clone(), center: n, radius: f, startAngle: l, endAngle: p }), a.showLabel) { var z; z = 1 === j.raw.series.length ? { x: n.x, y: n.y } : c.polarToCartesian(n.x, n.y, h, l + (p - l) / 2); var A; A = j.normalized.labels && !c.isFalseyButZero(j.normalized.labels[g]) ? j.normalized.labels[g] : j.normalized.series[g]; var B = a.labelInterpolationFnc(A, g); if (B || 0 === B) { var C = b.elem("text", { dx: z.x, dy: z.y, "text-anchor": d(n, z, a.labelDirection) }, a.classNames.label).text("" + B); this.eventEmitter.emit("draw", { type: "label", index: g, group: b, element: C, text: "" + B, x: z.x, y: z.y }) } } l = p } }.bind(this)), this.eventEmitter.emit("created", { chartRect: e, svg: this.svg, options: a }) } function f(a, b, d, e) { c.Pie["super"].constructor.call(this, a, b, g, c.extend({}, g, d), e) } var g = { width: void 0, height: void 0, chartPadding: 5, classNames: { chartPie: "ct-chart-pie", chartDonut: "ct-chart-donut", series: "ct-series", slicePie: "ct-slice-pie", sliceDonut: "ct-slice-donut", sliceDonutSolid: "ct-slice-donut-solid", label: "ct-label" }, startAngle: 0, total: void 0, donut: !1, donutSolid: !1, donutWidth: 60, showLabel: !0, labelOffset: 0, labelPosition: "inside", labelInterpolationFnc: c.noop, labelDirection: "neutral", reverseData: !1, ignoreEmptyValues: !1 }; c.Pie = c.Base.extend({ constructor: f, createChart: e, determineAnchorPosition: d }) }(window, document, a), a -}); - -var i, l, selectedLine = null; - -/* Navigate to hash without browser history entry */ -var navigateToHash = function () { - if (window.history !== undefined && window.history.replaceState !== undefined) { - window.history.replaceState(undefined, undefined, this.getAttribute("href")); - } -}; - -var hashLinks = document.getElementsByClassName('navigatetohash'); -for (i = 0, l = hashLinks.length; i < l; i++) { - hashLinks[i].addEventListener('click', navigateToHash); -} - -/* Switch test method */ -var switchTestMethod = function () { - var method = this.getAttribute("value"); - console.log("Selected test method: " + method); - - var lines, i, l, coverageData, lineAnalysis, cells; - - lines = document.querySelectorAll('.lineAnalysis tr'); - - for (i = 1, l = lines.length; i < l; i++) { - coverageData = JSON.parse(lines[i].getAttribute('data-coverage').replace(/'/g, '"')); - lineAnalysis = coverageData[method]; - cells = lines[i].querySelectorAll('td'); - if (lineAnalysis === undefined) { - lineAnalysis = coverageData.AllTestMethods; - if (lineAnalysis.LVS !== 'gray') { - cells[0].setAttribute('class', 'red'); - cells[1].innerText = cells[1].textContent = '0'; - cells[4].setAttribute('class', 'lightred'); - } - } else { - cells[0].setAttribute('class', lineAnalysis.LVS); - cells[1].innerText = cells[1].textContent = lineAnalysis.VC; - cells[4].setAttribute('class', 'light' + lineAnalysis.LVS); - } - } -}; - -var testMethods = document.getElementsByClassName('switchtestmethod'); -for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].addEventListener('change', switchTestMethod); -} - -/* Highlight test method by line */ -var toggleLine = function () { - if (selectedLine === this) { - selectedLine = null; - } else { - selectedLine = null; - unhighlightTestMethods(); - highlightTestMethods.call(this); - selectedLine = this; - } - -}; -var highlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var lineAnalysis; - var coverageData = JSON.parse(this.getAttribute('data-coverage').replace(/'/g, '"')); - var testMethods = document.getElementsByClassName('testmethod'); - - for (i = 0, l = testMethods.length; i < l; i++) { - lineAnalysis = coverageData[testMethods[i].id]; - if (lineAnalysis === undefined) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } else { - testMethods[i].className += ' light' + lineAnalysis.LVS; - } - } -}; -var unhighlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var testMethods = document.getElementsByClassName('testmethod'); - for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } -}; -var coverableLines = document.getElementsByClassName('coverableline'); -for (i = 0, l = coverableLines.length; i < l; i++) { - coverableLines[i].addEventListener('click', toggleLine); - coverableLines[i].addEventListener('mouseenter', highlightTestMethods); - coverableLines[i].addEventListener('mouseleave', unhighlightTestMethods); -} - -/* History charts */ -var renderChart = function (chart) { - // Remove current children (e.g. PNG placeholder) - while (chart.firstChild) { - chart.firstChild.remove(); - } - - var chartData = window[chart.getAttribute('data-data')]; - var options = { - axisY: { - type: undefined, - onlyInteger: true - }, - lineSmooth: false, - low: 0, - high: 100, - scaleMinSpace: 20, - onlyInteger: true, - fullWidth: true - }; - var lineChart = new Chartist.Line(chart, { - labels: [], - series: chartData.series - }, options); - - /* Zoom */ - var zoomButtonDiv = document.createElement("div"); - zoomButtonDiv.className = "toggleZoom"; - var zoomButtonLink = document.createElement("a"); - zoomButtonLink.setAttribute("href", ""); - var zoomButtonText = document.createElement("i"); - zoomButtonText.className = "icon-search-plus"; - - zoomButtonLink.appendChild(zoomButtonText); - zoomButtonDiv.appendChild(zoomButtonLink); - - chart.appendChild(zoomButtonDiv); - - zoomButtonDiv.addEventListener('click', function (event) { - event.preventDefault(); - - if (options.axisY.type === undefined) { - options.axisY.type = Chartist.AutoScaleAxis; - zoomButtonText.className = "icon-search-minus"; - } else { - options.axisY.type = undefined; - zoomButtonText.className = "icon-search-plus"; - } - - lineChart.update(null, options); - }); - - var tooltip = document.createElement("div"); - tooltip.className = "tooltip"; - - chart.appendChild(tooltip); - - /* Tooltips */ - var showToolTip = function () { - var point = this; - var index = [].slice.call(chart.getElementsByClassName('ct-point')).indexOf(point); - - tooltip.innerHTML = chartData.tooltips[index % chartData.tooltips.length]; - tooltip.style.display = 'block'; - }; - - var moveToolTip = function (event) { - var box = chart.getBoundingClientRect(); - var left = event.pageX - box.left - window.pageXOffset; - var top = event.pageY - box.top - window.pageYOffset; - - left = left + 20; - top = top - tooltip.offsetHeight / 2; - - if (left + tooltip.offsetWidth > box.width) { - left -= tooltip.offsetWidth + 40; - } - - if (top < 0) { - top = 0; - } - - if (top + tooltip.offsetHeight > box.height) { - top = box.height - tooltip.offsetHeight; - } - - tooltip.style.left = left + 'px'; - tooltip.style.top = top + 'px'; - }; - - var hideToolTip = function () { - tooltip.style.display = 'none'; - }; - chart.addEventListener('mousemove', moveToolTip); - - lineChart.on('created', function () { - var chartPoints = chart.getElementsByClassName('ct-point'); - for (i = 0, l = chartPoints.length; i < l; i++) { - chartPoints[i].addEventListener('mousemove', showToolTip); - chartPoints[i].addEventListener('mouseout', hideToolTip); - } - }); -}; - -var charts = document.getElementsByClassName('historychart'); -for (i = 0, l = charts.length; i < l; i++) { - renderChart(charts[i]); -} \ No newline at end of file diff --git a/docs/coverage/icon_cube.svg b/docs/coverage/icon_cube.svg deleted file mode 100644 index 11b5cab..0000000 --- a/docs/coverage/icon_cube.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_down-dir_active.svg b/docs/coverage/icon_down-dir_active.svg deleted file mode 100644 index d11cf04..0000000 --- a/docs/coverage/icon_down-dir_active.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_fork.svg b/docs/coverage/icon_fork.svg deleted file mode 100644 index f0148b3..0000000 --- a/docs/coverage/icon_fork.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_info-circled.svg b/docs/coverage/icon_info-circled.svg deleted file mode 100644 index 252166b..0000000 --- a/docs/coverage/icon_info-circled.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_minus.svg b/docs/coverage/icon_minus.svg deleted file mode 100644 index 3c30c36..0000000 --- a/docs/coverage/icon_minus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_plus.svg b/docs/coverage/icon_plus.svg deleted file mode 100644 index 7932723..0000000 --- a/docs/coverage/icon_plus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_search-minus.svg b/docs/coverage/icon_search-minus.svg deleted file mode 100644 index c174eb5..0000000 --- a/docs/coverage/icon_search-minus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_search-plus.svg b/docs/coverage/icon_search-plus.svg deleted file mode 100644 index 04b24ec..0000000 --- a/docs/coverage/icon_search-plus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_up-dir.svg b/docs/coverage/icon_up-dir.svg deleted file mode 100644 index 567c11f..0000000 --- a/docs/coverage/icon_up-dir.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_up-dir_active.svg b/docs/coverage/icon_up-dir_active.svg deleted file mode 100644 index bb22554..0000000 --- a/docs/coverage/icon_up-dir_active.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/icon_wrench.svg b/docs/coverage/icon_wrench.svg deleted file mode 100644 index 0e9a860..0000000 --- a/docs/coverage/icon_wrench.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/docs/coverage/index.htm b/docs/coverage/index.htm deleted file mode 100644 index 9f2a5b1..0000000 --- a/docs/coverage/index.htm +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - -Summary - Coverage Report - -
-

Summary

- ---- - - - - - - - - - - - - - - - -
Generated on:06/30/2020 - 21:09:24
Parser:OpenCoverParser
Assemblies:1
Classes:19
Files:16
Covered lines:461
Uncovered lines:1030
Coverable lines:1491
Total lines:4231
Line coverage:30.9% (461 of 1491)
Covered branches:89
Total branches:449
Branch coverage:19.8% (89 of 449)
-

Risk Hotspots

- - -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AssemblyClassMethodCyclomatic complexity NPath complexity Crap Score
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGeneratorgenerateEntityTypeAnnotations(...)16409616.5
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGeneratorgenerateForeignKey(...)1540960
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Internal.FSharpHelperunknownLiteral(...)321536731.26
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Internal.FSharpHelperhandleExpression(...)145120
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Internal.FSharpUtilitiesgetTypeName(...)1151211.17
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationOperationGeneratorGenerateNext(...)28512413.81
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Internal.FSharpHelperisIdentifierPartCharacter(...)142880
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Internal.FSharpHelperIdentifierWithScope(...)132560
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGeneratorGenerateNext(...)1464103.2
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Internal.FSharpUtilitiesgenerateLiteral(...)132299.53
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Internal.FSharpHelperReferenceFullName(...)83249.67
EntityFrameworkCore.FSharpEntityFrameworkCore.FSharp.Scaffolding.FSharpEntityTypeGeneratorGenerateNext(...)23023
-
-

Coverage

- - ----------- - - - - - - - - - - - - - - - - - - - - - - - -
NameCoveredUncoveredCoverableTotalLine coverageBranch coverage
EntityFrameworkCore.FSharp46110301491451130.9%
  
19.8%
  
EntityFrameworkCore.FSharp.Conversion066210%
 
 
EntityFrameworkCore.FSharp.EFCoreFSharpServices1101126100%
 
 
EntityFrameworkCore.FSharp.EntityFrameworkExtensions515206725%
  
 
EntityFrameworkCore.FSharp.Extensions917265634.6%
  
 
EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities1713307356.6%
  
40%
  
EntityFrameworkCore.FSharp.Internal.FSharpHelper14626841466035.2%
  
14.1%
  
EntityFrameworkCore.FSharp.Internal.FSharpUtilities31306126150.8%
  
44%
  
EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationOperationGenerator02232237400%
 
6%
  
EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGenerator01041043700%
 
0%
 
EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGeneratorDependencies01010370%
 
 
EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsScaffolder02727530%
 
0%
 
EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator10423834275130.4%
  
27.2%
  
EntityFrameworkCore.FSharp.OptionConverter`1033210%
 
 
EntityFrameworkCore.FSharp.Scaffolding.AttributeWriter42625966.6%
  
50%
  
EntityFrameworkCore.FSharp.Scaffolding.FSharpDbContextGenerator544710166853.4%
  
27.2%
  
EntityFrameworkCore.FSharp.Scaffolding.FSharpEntityTypeGenerator20103025966.6%
  
0%
 
EntityFrameworkCore.FSharp.Scaffolding.Internal.FSharpModelGenerator5615712098.2%
  
50%
  
EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes0000
 
 
EntityFrameworkCore.FSharp.SharedTypeExtensions416206920%
  
14.2%
  
-
-
- - \ No newline at end of file diff --git a/docs/coverage/main.js b/docs/coverage/main.js deleted file mode 100644 index 6dc16d7..0000000 --- a/docs/coverage/main.js +++ /dev/null @@ -1,383 +0,0 @@ -/* Chartist.js 0.11.0 - * Copyright © 2017 Gion Kunz - * Free to use under either the WTFPL license or the MIT license. - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT - */ - -!function (a, b) { "function" == typeof define && define.amd ? define("Chartist", [], function () { return a.Chartist = b() }) : "object" == typeof module && module.exports ? module.exports = b() : a.Chartist = b() }(this, function () { - var a = { version: "0.11.0" }; return function (a, b, c) { "use strict"; c.namespaces = { svg: "http://www.w3.org/2000/svg", xmlns: "http://www.w3.org/2000/xmlns/", xhtml: "http://www.w3.org/1999/xhtml", xlink: "http://www.w3.org/1999/xlink", ct: "http://gionkunz.github.com/chartist-js/ct" }, c.noop = function (a) { return a }, c.alphaNumerate = function (a) { return String.fromCharCode(97 + a % 26) }, c.extend = function (a) { var b, d, e; for (a = a || {}, b = 1; b < arguments.length; b++) { d = arguments[b]; for (var f in d) e = d[f], "object" != typeof e || null === e || e instanceof Array ? a[f] = e : a[f] = c.extend(a[f], e) } return a }, c.replaceAll = function (a, b, c) { return a.replace(new RegExp(b, "g"), c) }, c.ensureUnit = function (a, b) { return "number" == typeof a && (a += b), a }, c.quantity = function (a) { if ("string" == typeof a) { var b = /^(\d+)\s*(.*)$/g.exec(a); return { value: +b[1], unit: b[2] || void 0 } } return { value: a } }, c.querySelector = function (a) { return a instanceof Node ? a : b.querySelector(a) }, c.times = function (a) { return Array.apply(null, new Array(a)) }, c.sum = function (a, b) { return a + (b ? b : 0) }, c.mapMultiply = function (a) { return function (b) { return b * a } }, c.mapAdd = function (a) { return function (b) { return b + a } }, c.serialMap = function (a, b) { var d = [], e = Math.max.apply(null, a.map(function (a) { return a.length })); return c.times(e).forEach(function (c, e) { var f = a.map(function (a) { return a[e] }); d[e] = b.apply(null, f) }), d }, c.roundWithPrecision = function (a, b) { var d = Math.pow(10, b || c.precision); return Math.round(a * d) / d }, c.precision = 8, c.escapingMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, c.serialize = function (a) { return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == typeof a && (a = JSON.stringify({ data: a })), Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, b, c.escapingMap[b]) }, a)) }, c.deserialize = function (a) { if ("string" != typeof a) return a; a = Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, c.escapingMap[b], b) }, a); try { a = JSON.parse(a), a = void 0 !== a.data ? a.data : a } catch (b) { } return a }, c.createSvg = function (a, b, d, e) { var f; return b = b || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) { return a.getAttributeNS(c.namespaces.xmlns, "ct") }).forEach(function (b) { a.removeChild(b) }), f = new c.Svg("svg").attr({ width: b, height: d }).addClass(e), f._node.style.width = b, f._node.style.height = d, a.appendChild(f._node), f }, c.normalizeData = function (a, b, d) { var e, f = { raw: a, normalized: {} }; return f.normalized.series = c.getDataArray({ series: a.series || [] }, b, d), e = f.normalized.series.every(function (a) { return a instanceof Array }) ? Math.max.apply(null, f.normalized.series.map(function (a) { return a.length })) : f.normalized.series.length, f.normalized.labels = (a.labels || []).slice(), Array.prototype.push.apply(f.normalized.labels, c.times(Math.max(0, e - f.normalized.labels.length)).map(function () { return "" })), b && c.reverseData(f.normalized), f }, c.safeHasProperty = function (a, b) { return null !== a && "object" == typeof a && a.hasOwnProperty(b) }, c.isDataHoleValue = function (a) { return null === a || void 0 === a || "number" == typeof a && isNaN(a) }, c.reverseData = function (a) { a.labels.reverse(), a.series.reverse(); for (var b = 0; b < a.series.length; b++)"object" == typeof a.series[b] && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse() }, c.getDataArray = function (a, b, d) { function e(a) { if (c.safeHasProperty(a, "value")) return e(a.value); if (c.safeHasProperty(a, "data")) return e(a.data); if (a instanceof Array) return a.map(e); if (!c.isDataHoleValue(a)) { if (d) { var b = {}; return "string" == typeof d ? b[d] = c.getNumberOrUndefined(a) : b.y = c.getNumberOrUndefined(a), b.x = a.hasOwnProperty("x") ? c.getNumberOrUndefined(a.x) : b.x, b.y = a.hasOwnProperty("y") ? c.getNumberOrUndefined(a.y) : b.y, b } return c.getNumberOrUndefined(a) } } return a.series.map(e) }, c.normalizePadding = function (a, b) { return b = b || 0, "number" == typeof a ? { top: a, right: a, bottom: a, left: a } : { top: "number" == typeof a.top ? a.top : b, right: "number" == typeof a.right ? a.right : b, bottom: "number" == typeof a.bottom ? a.bottom : b, left: "number" == typeof a.left ? a.left : b } }, c.getMetaData = function (a, b) { var c = a.data ? a.data[b] : a[b]; return c ? c.meta : void 0 }, c.orderOfMagnitude = function (a) { return Math.floor(Math.log(Math.abs(a)) / Math.LN10) }, c.projectLength = function (a, b, c) { return b / c.range * a }, c.getAvailableHeight = function (a, b) { return Math.max((c.quantity(b.height).value || a.height()) - (b.chartPadding.top + b.chartPadding.bottom) - b.axisX.offset, 0) }, c.getHighLow = function (a, b, d) { function e(a) { if (void 0 !== a) if (a instanceof Array) for (var b = 0; b < a.length; b++)e(a[b]); else { var c = d ? +a[d] : +a; g && c > f.high && (f.high = c), h && c < f.low && (f.low = c) } } b = c.extend({}, b, d ? b["axis" + d.toUpperCase()] : {}); var f = { high: void 0 === b.high ? -Number.MAX_VALUE : +b.high, low: void 0 === b.low ? Number.MAX_VALUE : +b.low }, g = void 0 === b.high, h = void 0 === b.low; return (g || h) && e(a), (b.referenceValue || 0 === b.referenceValue) && (f.high = Math.max(b.referenceValue, f.high), f.low = Math.min(b.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.high > 0 ? f.low = 0 : (f.high = 1, f.low = 0)), f }, c.isNumeric = function (a) { return null !== a && isFinite(a) }, c.isFalseyButZero = function (a) { return !a && 0 !== a }, c.getNumberOrUndefined = function (a) { return c.isNumeric(a) ? +a : void 0 }, c.isMultiValue = function (a) { return "object" == typeof a && ("x" in a || "y" in a) }, c.getMultiValue = function (a, b) { return c.isMultiValue(a) ? c.getNumberOrUndefined(a[b || "y"]) : c.getNumberOrUndefined(a) }, c.rho = function (a) { function b(a, c) { return a % c === 0 ? c : b(c, a % c) } function c(a) { return a * a + 1 } if (1 === a) return a; var d, e = 2, f = 2; if (a % 2 === 0) return 2; do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d); return d }, c.getBounds = function (a, b, d, e) { function f(a, b) { return a === (a += b) && (a *= 1 + (b > 0 ? o : -o)), a } var g, h, i, j = 0, k = { high: b.high, low: b.low }; k.valueRange = k.high - k.low, k.oom = c.orderOfMagnitude(k.valueRange), k.step = Math.pow(10, k.oom), k.min = Math.floor(k.low / k.step) * k.step, k.max = Math.ceil(k.high / k.step) * k.step, k.range = k.max - k.min, k.numberOfSteps = Math.round(k.range / k.step); var l = c.projectLength(a, k.step, k), m = l < d, n = e ? c.rho(k.range) : 0; if (e && c.projectLength(a, 1, k) >= d) k.step = 1; else if (e && n < k.step && c.projectLength(a, n, k) >= d) k.step = n; else for (; ;) { if (m && c.projectLength(a, k.step, k) <= d) k.step *= 2; else { if (m || !(c.projectLength(a, k.step / 2, k) >= d)) break; if (k.step /= 2, e && k.step % 1 !== 0) { k.step *= 2; break } } if (j++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!") } var o = 2.221e-16; for (k.step = Math.max(k.step, o), h = k.min, i = k.max; h + k.step <= k.low;)h = f(h, k.step); for (; i - k.step >= k.high;)i = f(i, -k.step); k.min = h, k.max = i, k.range = k.max - k.min; var p = []; for (g = k.min; g <= k.max; g = f(g, k.step)) { var q = c.roundWithPrecision(g); q !== p[p.length - 1] && p.push(q) } return k.values = p, k }, c.polarToCartesian = function (a, b, c, d) { var e = (d - 90) * Math.PI / 180; return { x: a + c * Math.cos(e), y: b + c * Math.sin(e) } }, c.createChartRect = function (a, b, d) { var e = !(!b.axisX && !b.axisY), f = e ? b.axisY.offset : 0, g = e ? b.axisX.offset : 0, h = a.width() || c.quantity(b.width).value || 0, i = a.height() || c.quantity(b.height).value || 0, j = c.normalizePadding(b.chartPadding, d); h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom); var k = { padding: j, width: function () { return this.x2 - this.x1 }, height: function () { return this.y1 - this.y2 } }; return e ? ("start" === b.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === b.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k }, c.createGrid = function (a, b, d, e, f, g, h, i) { var j = {}; j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f; var k = g.elem("line", j, h.join(" ")); i.emit("draw", c.extend({ type: "grid", axis: d, index: b, group: g, element: k }, j)) }, c.createGridBackground = function (a, b, c, d) { var e = a.elem("rect", { x: b.x1, y: b.y2, width: b.width(), height: b.height() }, c, !0); d.emit("draw", { type: "gridBackground", group: a, element: e }) }, c.createLabel = function (a, d, e, f, g, h, i, j, k, l, m) { var n, o = {}; if (o[g.units.pos] = a + i[g.units.pos], o[g.counterUnits.pos] = i[g.counterUnits.pos], o[g.units.len] = d, o[g.counterUnits.len] = Math.max(0, h - 10), l) { var p = b.createElement("span"); p.className = k.join(" "), p.setAttribute("xmlns", c.namespaces.xhtml), p.innerText = f[e], p.style[g.units.len] = Math.round(o[g.units.len]) + "px", p.style[g.counterUnits.len] = Math.round(o[g.counterUnits.len]) + "px", n = j.foreignObject(p, c.extend({ style: "overflow: visible;" }, o)) } else n = j.elem("text", o, k.join(" ")).text(f[e]); m.emit("draw", c.extend({ type: "label", axis: g, index: e, group: j, element: n, text: f[e] }, o)) }, c.getSeriesOption = function (a, b, c) { if (a.name && b.series && b.series[a.name]) { var d = b.series[a.name]; return d.hasOwnProperty(c) ? d[c] : b[c] } return b[c] }, c.optionsProvider = function (b, d, e) { function f(b) { var f = h; if (h = c.extend({}, j), d) for (i = 0; i < d.length; i++) { var g = a.matchMedia(d[i][0]); g.matches && (h = c.extend(h, d[i][1])) } e && b && e.emit("optionsChanged", { previousOptions: f, currentOptions: h }) } function g() { k.forEach(function (a) { a.removeListener(f) }) } var h, i, j = c.extend({}, b), k = []; if (!a.matchMedia) throw "window.matchMedia not found! Make sure you're using a polyfill."; if (d) for (i = 0; i < d.length; i++) { var l = a.matchMedia(d[i][0]); l.addListener(f), k.push(l) } return f(), { removeMediaQueryListeners: g, getCurrentOptions: function () { return c.extend({}, h) } } }, c.splitIntoSegments = function (a, b, d) { var e = { increasingX: !1, fillHoles: !1 }; d = c.extend({}, e, d); for (var f = [], g = !0, h = 0; h < a.length; h += 2)void 0 === c.getMultiValue(b[h / 2].value) ? d.fillHoles || (g = !0) : (d.increasingX && h >= 2 && a[h] <= a[h - 2] && (g = !0), g && (f.push({ pathCoordinates: [], valueData: [] }), g = !1), f[f.length - 1].pathCoordinates.push(a[h], a[h + 1]), f[f.length - 1].valueData.push(b[h / 2])); return f } }(window, document, a), function (a, b, c) { "use strict"; c.Interpolation = {}, c.Interpolation.none = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e = new c.Svg.Path, f = !0, g = 0; g < b.length; g += 2) { var h = b[g], i = b[g + 1], j = d[g / 2]; void 0 !== c.getMultiValue(j.value) ? (f ? e.move(h, i, !1, j) : e.line(h, i, !1, j), f = !1) : a.fillHoles || (f = !0) } return e } }, c.Interpolation.simple = function (a) { var b = { divisor: 2, fillHoles: !1 }; a = c.extend({}, b, a); var d = 1 / Math.max(1, a.divisor); return function (b, e) { for (var f, g, h, i = new c.Svg.Path, j = 0; j < b.length; j += 2) { var k = b[j], l = b[j + 1], m = (k - f) * d, n = e[j / 2]; void 0 !== n.value ? (void 0 === h ? i.move(k, l, !1, n) : i.curve(f + m, g, k - m, l, k, l, !1, n), f = k, g = l, h = n) : a.fillHoles || (f = k = h = void 0) } return i } }, c.Interpolation.cardinal = function (a) { var b = { tension: 1, fillHoles: !1 }; a = c.extend({}, b, a); var d = Math.min(1, Math.max(0, a.tension)), e = 1 - d; return function f(b, g) { var h = c.splitIntoSegments(b, g, { fillHoles: a.fillHoles }); if (h.length) { if (h.length > 1) { var i = []; return h.forEach(function (a) { i.push(f(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(i) } if (b = h[0].pathCoordinates, g = h[0].valueData, b.length <= 4) return c.Interpolation.none()(b, g); for (var j, k = (new c.Svg.Path).move(b[0], b[1], !1, g[0]), l = 0, m = b.length; m - 2 * !j > l; l += 2) { var n = [{ x: +b[l - 2], y: +b[l - 1] }, { x: +b[l], y: +b[l + 1] }, { x: +b[l + 2], y: +b[l + 3] }, { x: +b[l + 4], y: +b[l + 5] }]; j ? l ? m - 4 === l ? n[3] = { x: +b[0], y: +b[1] } : m - 2 === l && (n[2] = { x: +b[0], y: +b[1] }, n[3] = { x: +b[2], y: +b[3] }) : n[0] = { x: +b[m - 2], y: +b[m - 1] } : m - 4 === l ? n[3] = n[2] : l || (n[0] = { x: +b[l], y: +b[l + 1] }), k.curve(d * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + e * n[2].x, d * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + e * n[2].y, d * (n[1].x + 6 * n[2].x - n[3].x) / 6 + e * n[2].x, d * (n[1].y + 6 * n[2].y - n[3].y) / 6 + e * n[2].y, n[2].x, n[2].y, !1, g[(l + 2) / 2]) } return k } return c.Interpolation.none()([]) } }, c.Interpolation.monotoneCubic = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function d(b, e) { var f = c.splitIntoSegments(b, e, { fillHoles: a.fillHoles, increasingX: !0 }); if (f.length) { if (f.length > 1) { var g = []; return f.forEach(function (a) { g.push(d(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(g) } if (b = f[0].pathCoordinates, e = f[0].valueData, b.length <= 4) return c.Interpolation.none()(b, e); var h, i, j = [], k = [], l = b.length / 2, m = [], n = [], o = [], p = []; for (h = 0; h < l; h++)j[h] = b[2 * h], k[h] = b[2 * h + 1]; for (h = 0; h < l - 1; h++)o[h] = k[h + 1] - k[h], p[h] = j[h + 1] - j[h], n[h] = o[h] / p[h]; for (m[0] = n[0], m[l - 1] = n[l - 2], h = 1; h < l - 1; h++)0 === n[h] || 0 === n[h - 1] || n[h - 1] > 0 != n[h] > 0 ? m[h] = 0 : (m[h] = 3 * (p[h - 1] + p[h]) / ((2 * p[h] + p[h - 1]) / n[h - 1] + (p[h] + 2 * p[h - 1]) / n[h]), isFinite(m[h]) || (m[h] = 0)); for (i = (new c.Svg.Path).move(j[0], k[0], !1, e[0]), h = 0; h < l - 1; h++)i.curve(j[h] + p[h] / 3, k[h] + m[h] * p[h] / 3, j[h + 1] - p[h] / 3, k[h + 1] - m[h + 1] * p[h] / 3, j[h + 1], k[h + 1], !1, e[h + 1]); return i } return c.Interpolation.none()([]) } }, c.Interpolation.step = function (a) { var b = { postpone: !0, fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e, f, g, h = new c.Svg.Path, i = 0; i < b.length; i += 2) { var j = b[i], k = b[i + 1], l = d[i / 2]; void 0 !== l.value ? (void 0 === g ? h.move(j, k, !1, l) : (a.postpone ? h.line(j, f, !1, g) : h.line(e, k, !1, l), h.line(j, k, !1, l)), e = j, f = k, g = l) : a.fillHoles || (e = f = g = void 0) } return h } } }(window, document, a), function (a, b, c) { "use strict"; c.EventEmitter = function () { function a(a, b) { d[a] = d[a] || [], d[a].push(b) } function b(a, b) { d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]) } function c(a, b) { d[a] && d[a].forEach(function (a) { a(b) }), d["*"] && d["*"].forEach(function (c) { c(a, b) }) } var d = []; return { addEventHandler: a, removeEventHandler: b, emit: c } } }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = []; if (a.length) for (var c = 0; c < a.length; c++)b.push(a[c]); return b } function e(a, b) { var d = b || this.prototype || c.Class, e = Object.create(d); c.Class.cloneDefinitions(e, a); var f = function () { var a, b = e.constructor || function () { }; return a = this === c ? Object.create(e) : this, b.apply(a, Array.prototype.slice.call(arguments, 0)), a }; return f.prototype = e, f["super"] = d, f.extend = this.extend, f } function f() { var a = d(arguments), b = a[0]; return a.splice(1, a.length - 1).forEach(function (a) { Object.getOwnPropertyNames(a).forEach(function (c) { delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c)) }) }), b } c.Class = { extend: e, cloneDefinitions: f } }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d) { return a && (this.data = a || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.eventEmitter.emit("data", { type: "update", data: this.data })), b && (this.options = c.extend({}, d ? this.options : this.defaultOptions, b), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this } function e() { return this.initializeTimeoutId ? a.clearTimeout(this.initializeTimeoutId) : (a.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this } function f(a, b) { return this.eventEmitter.addEventHandler(a, b), this } function g(a, b) { return this.eventEmitter.removeEventHandler(a, b), this } function h() { a.addEventListener("resize", this.resizeListener), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () { this.update() }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) { a instanceof Array ? a[0](this, a[1]) : a(this) }.bind(this)), this.eventEmitter.emit("data", { type: "initial", data: this.data }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0 } function i(a, b, d, e, f) { this.container = c.querySelector(a), this.data = b || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = c.EventEmitter(), this.supportsForeignObject = c.Svg.isSupported("Extensibility"), this.supportsAnimations = c.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () { this.update() }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(h.bind(this), 0) } c.Base = c.Class.extend({ constructor: i, optionsProvider: void 0, container: void 0, svg: void 0, eventEmitter: void 0, createChart: function () { throw new Error("Base chart type can't be instantiated!") }, update: d, detach: e, on: f, off: g, version: c.version, supportsForeignObject: !1 }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, d, e, f, g) { a instanceof Element ? this._node = a : (this._node = b.createElementNS(c.namespaces.svg, a), "svg" === a && this.attr({ "xmlns:ct": c.namespaces.ct })), d && this.attr(d), e && this.addClass(e), f && (g && f._node.firstChild ? f._node.insertBefore(this._node, f._node.firstChild) : f._node.appendChild(this._node)) } function e(a, b) { return "string" == typeof a ? b ? this._node.getAttributeNS(b, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (b) { if (void 0 !== a[b]) if (b.indexOf(":") !== -1) { var d = b.split(":"); this._node.setAttributeNS(c.namespaces[d[0]], b, a[b]) } else this._node.setAttribute(b, a[b]) }.bind(this)), this) } function f(a, b, d, e) { return new c.Svg(a, b, d, this, e) } function g() { return this._node.parentNode instanceof SVGElement ? new c.Svg(this._node.parentNode) : null } function h() { for (var a = this._node; "svg" !== a.nodeName;)a = a.parentNode; return new c.Svg(a) } function i(a) { var b = this._node.querySelector(a); return b ? new c.Svg(b) : null } function j(a) { var b = this._node.querySelectorAll(a); return b.length ? new c.Svg.List(b) : null } function k() { return this._node } function l(a, d, e, f) { if ("string" == typeof a) { var g = b.createElement("div"); g.innerHTML = a, a = g.firstChild } a.setAttribute("xmlns", c.namespaces.xmlns); var h = this.elem("foreignObject", d, e, f); return h._node.appendChild(a), h } function m(a) { return this._node.appendChild(b.createTextNode(a)), this } function n() { for (; this._node.firstChild;)this._node.removeChild(this._node.firstChild); return this } function o() { return this._node.parentNode.removeChild(this._node), this.parent() } function p(a) { return this._node.parentNode.replaceChild(a._node, this._node), a } function q(a, b) { return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this } function r() { return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\s+/) : [] } function s(a) { return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function (a, b, c) { return c.indexOf(a) === b }).join(" ")), this } function t(a) { var b = a.trim().split(/\s+/); return this._node.setAttribute("class", this.classes(this._node).filter(function (a) { return b.indexOf(a) === -1 }).join(" ")), this } function u() { return this._node.setAttribute("class", ""), this } function v() { return this._node.getBoundingClientRect().height } function w() { return this._node.getBoundingClientRect().width } function x(a, b, d) { return void 0 === b && (b = !0), Object.keys(a).forEach(function (e) { function f(a, b) { var f, g, h, i = {}; a.easing && (h = a.easing instanceof Array ? a.easing : c.Svg.Easing[a.easing], delete a.easing), a.begin = c.ensureUnit(a.begin, "ms"), a.dur = c.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), b && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = c.quantity(a.begin || 0).value, a.begin = "indefinite"), f = this.elem("animate", c.extend({ attributeName: e }, a)), b && setTimeout(function () { try { f._node.beginElement() } catch (b) { i[e] = a.to, this.attr(i), f.remove() } }.bind(this), g), d && f._node.addEventListener("beginEvent", function () { d.emit("animationBegin", { element: this, animate: f._node, params: a }) }.bind(this)), f._node.addEventListener("endEvent", function () { d && d.emit("animationEnd", { element: this, animate: f._node, params: a }), b && (i[e] = a.to, this.attr(i), f.remove()) }.bind(this)) } a[e] instanceof Array ? a[e].forEach(function (a) { f.bind(this)(a, !1) }.bind(this)) : f.bind(this)(a[e], b) }.bind(this)), this } function y(a) { var b = this; this.svgElements = []; for (var d = 0; d < a.length; d++)this.svgElements.push(new c.Svg(a[d])); Object.keys(c.Svg.prototype).filter(function (a) { return ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a) === -1 }).forEach(function (a) { b[a] = function () { var d = Array.prototype.slice.call(arguments, 0); return b.svgElements.forEach(function (b) { c.Svg.prototype[a].apply(b, d) }), b } }) } c.Svg = c.Class.extend({ constructor: d, attr: e, elem: f, parent: g, root: h, querySelector: i, querySelectorAll: j, getNode: k, foreignObject: l, text: m, empty: n, remove: o, replace: p, append: q, classes: r, addClass: s, removeClass: t, removeAllClasses: u, height: v, width: w, animate: x }), c.Svg.isSupported = function (a) { return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1") }; var z = { easeInSine: [.47, 0, .745, .715], easeOutSine: [.39, .575, .565, 1], easeInOutSine: [.445, .05, .55, .95], easeInQuad: [.55, .085, .68, .53], easeOutQuad: [.25, .46, .45, .94], easeInOutQuad: [.455, .03, .515, .955], easeInCubic: [.55, .055, .675, .19], easeOutCubic: [.215, .61, .355, 1], easeInOutCubic: [.645, .045, .355, 1], easeInQuart: [.895, .03, .685, .22], easeOutQuart: [.165, .84, .44, 1], easeInOutQuart: [.77, 0, .175, 1], easeInQuint: [.755, .05, .855, .06], easeOutQuint: [.23, 1, .32, 1], easeInOutQuint: [.86, 0, .07, 1], easeInExpo: [.95, .05, .795, .035], easeOutExpo: [.19, 1, .22, 1], easeInOutExpo: [1, 0, 0, 1], easeInCirc: [.6, .04, .98, .335], easeOutCirc: [.075, .82, .165, 1], easeInOutCirc: [.785, .135, .15, .86], easeInBack: [.6, -.28, .735, .045], easeOutBack: [.175, .885, .32, 1.275], easeInOutBack: [.68, -.55, .265, 1.55] }; c.Svg.Easing = z, c.Svg.List = c.Class.extend({ constructor: y }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e, f, g) { var h = c.extend({ command: f ? a.toLowerCase() : a.toUpperCase() }, b, g ? { data: g } : {}); d.splice(e, 0, h) } function e(a, b) { a.forEach(function (c, d) { u[c.command.toLowerCase()].forEach(function (e, f) { b(c, e, d, f, a) }) }) } function f(a, b) { this.pathElements = [], this.pos = 0, this.close = a, this.options = c.extend({}, v, b) } function g(a) { return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos } function h(a) { return this.pathElements.splice(this.pos, a), this } function i(a, b, c, e) { return d("M", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function j(a, b, c, e) { return d("L", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function k(a, b, c, e, f, g, h, i) { return d("C", { x1: +a, y1: +b, x2: +c, y2: +e, x: +f, y: +g }, this.pathElements, this.pos++, h, i), this } function l(a, b, c, e, f, g, h, i, j) { return d("A", { rx: +a, ry: +b, xAr: +c, lAf: +e, sf: +f, x: +g, y: +h }, this.pathElements, this.pos++, i, j), this } function m(a) { var b = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\s,]+/).reduce(function (a, b) { return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a }, []); "Z" === b[b.length - 1][0].toUpperCase() && b.pop(); var d = b.map(function (a) { var b = a.shift(), d = u[b.toLowerCase()]; return c.extend({ command: b }, d.reduce(function (b, c, d) { return b[c] = +a[d], b }, {})) }), e = [this.pos, 0]; return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this } function n() { var a = Math.pow(10, this.options.accuracy); return this.pathElements.reduce(function (b, c) { var d = u[c.command.toLowerCase()].map(function (b) { return this.options.accuracy ? Math.round(c[b] * a) / a : c[b] }.bind(this)); return b + c.command + d.join(",") }.bind(this), "") + (this.close ? "Z" : "") } function o(a, b) { return e(this.pathElements, function (c, d) { c[d] *= "x" === d[0] ? a : b }), this } function p(a, b) { return e(this.pathElements, function (c, d) { c[d] += "x" === d[0] ? a : b }), this } function q(a) { return e(this.pathElements, function (b, c, d, e, f) { var g = a(b, c, d, e, f); (g || 0 === g) && (b[c] = g) }), this } function r(a) { var b = new c.Svg.Path(a || this.close); return b.pos = this.pos, b.pathElements = this.pathElements.slice().map(function (a) { return c.extend({}, a) }), b.options = c.extend({}, this.options), b } function s(a) { var b = [new c.Svg.Path]; return this.pathElements.forEach(function (d) { d.command === a.toUpperCase() && 0 !== b[b.length - 1].pathElements.length && b.push(new c.Svg.Path), b[b.length - 1].pathElements.push(d) }), b } function t(a, b, d) { for (var e = new c.Svg.Path(b, d), f = 0; f < a.length; f++)for (var g = a[f], h = 0; h < g.pathElements.length; h++)e.pathElements.push(g.pathElements[h]); return e } var u = { m: ["x", "y"], l: ["x", "y"], c: ["x1", "y1", "x2", "y2", "x", "y"], a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"] }, v = { accuracy: 3 }; c.Svg.Path = c.Class.extend({ constructor: f, position: g, remove: h, move: i, line: j, curve: k, arc: l, scale: o, translate: p, transform: q, parse: m, stringify: n, clone: r, splitByCommand: s }), c.Svg.Path.elementDescriptions = u, c.Svg.Path.join = t }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c, d) { this.units = a, this.counterUnits = a === f.x ? f.y : f.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d } function e(a, b, d, e, f) { var g = e["axis" + this.units.pos.toUpperCase()], h = this.ticks.map(this.projectValue.bind(this)), i = this.ticks.map(g.labelInterpolationFnc); h.forEach(function (j, k) { var l, m = { x: 0, y: 0 }; l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), c.isFalseyButZero(i[k]) && "" !== i[k] || ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && c.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && c.createLabel(j, l, k, i, this, g.offset, m, b, [e.classNames.label, e.classNames[this.units.dir], "start" === g.position ? e.classNames[g.position] : e.classNames.end], d, f)) }.bind(this)) } var f = { x: { pos: "x", len: "width", dir: "horizontal", rectStart: "x1", rectEnd: "x2", rectOffset: "y2" }, y: { pos: "y", len: "height", dir: "vertical", rectStart: "y2", rectEnd: "y1", rectOffset: "x1" } }; c.Axis = c.Class.extend({ constructor: d, createGridAndLabels: e, projectValue: function (a, b, c) { throw new Error("Base axis can't be instantiated!") } }), c.Axis.units = f }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.bounds = c.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = { min: this.bounds.min, max: this.bounds.max }, c.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e) } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range } c.AutoScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.divisor = e.divisor || 1, this.ticks = e.ticks || c.times(this.divisor).map(function (a, b) { return f.low + (f.high - f.low) / this.divisor * b }.bind(this)), this.ticks.sort(function (a, b) { return a - b }), this.range = { min: f.low, max: f.high }, c.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min) } c.FixedScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { c.StepAxis["super"].constructor.call(this, a, d, e.ticks, e); var f = Math.max(1, e.ticks.length - (e.stretch ? 1 : 0)); this.stepLength = this.axisLength / f } function e(a, b) { return this.stepLength * b } c.StepAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = c.normalizeData(this.data, a.reverseData, !0); this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart); var d, e, g = this.svg.elem("g").addClass(a.classNames.gridGroup), h = this.svg.elem("g"), i = this.svg.elem("g").addClass(a.classNames.labelGroup), j = c.createChartRect(this.svg, a, f.padding); d = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, j, c.extend({}, a.axisX, { ticks: b.normalized.labels, stretch: a.fullWidth })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, j, a.axisX), e = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, j, c.extend({}, a.axisY, { high: c.isNumeric(a.high) ? a.high : a.axisY.high, low: c.isNumeric(a.low) ? a.low : a.axisY.low })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), e.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(g, j, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (f, g) { var i = h.elem("g"); i.attr({ "ct:series-name": f.name, "ct:meta": c.serialize(f.meta) }), i.addClass([a.classNames.series, f.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var k = [], l = []; b.normalized.series[g].forEach(function (a, h) { var i = { x: j.x1 + d.projectValue(a, h, b.normalized.series[g]), y: j.y1 - e.projectValue(a, h, b.normalized.series[g]) }; k.push(i.x, i.y), l.push({ value: a, valueIndex: h, meta: c.getMetaData(f, h) }) }.bind(this)); var m = { lineSmooth: c.getSeriesOption(f, a, "lineSmooth"), showPoint: c.getSeriesOption(f, a, "showPoint"), showLine: c.getSeriesOption(f, a, "showLine"), showArea: c.getSeriesOption(f, a, "showArea"), areaBase: c.getSeriesOption(f, a, "areaBase") }, n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? c.Interpolation.monotoneCubic() : c.Interpolation.none(), o = n(k, l); if (m.showPoint && o.pathElements.forEach(function (b) { var h = i.elem("line", { x1: b.x, y1: b.y, x2: b.x + .01, y2: b.y }, a.classNames.point).attr({ "ct:value": [b.data.value.x, b.data.value.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(b.data.meta) }); this.eventEmitter.emit("draw", { type: "point", value: b.data.value, index: b.data.valueIndex, meta: b.data.meta, series: f, seriesIndex: g, axisX: d, axisY: e, group: i, element: h, x: b.x, y: b.y }) }.bind(this)), m.showLine) { var p = i.elem("path", { d: o.stringify() }, a.classNames.line, !0); this.eventEmitter.emit("draw", { type: "line", values: b.normalized.series[g], path: o.clone(), chartRect: j, index: g, series: f, seriesIndex: g, seriesMeta: f.meta, axisX: d, axisY: e, group: i, element: p }) } if (m.showArea && e.range) { var q = Math.max(Math.min(m.areaBase, e.range.max), e.range.min), r = j.y1 - e.projectValue(q); o.splitByCommand("M").filter(function (a) { return a.pathElements.length > 1 }).map(function (a) { var b = a.pathElements[0], c = a.pathElements[a.pathElements.length - 1]; return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r) }).forEach(function (c) { var h = i.elem("path", { d: c.stringify() }, a.classNames.area, !0); this.eventEmitter.emit("draw", { type: "area", values: b.normalized.series[g], path: c.clone(), series: f, seriesIndex: g, axisX: d, axisY: e, chartRect: j, index: g, group: i, element: h }) }.bind(this)) } }.bind(this)), this.eventEmitter.emit("created", { bounds: e.bounds, chartRect: j, axisX: d, axisY: e, svg: this.svg, options: a }) } function e(a, b, d, e) { c.Line["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, showLine: !0, showPoint: !0, showArea: !1, areaBase: 0, lineSmooth: !0, showGridBackground: !1, low: void 0, high: void 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, fullWidth: !1, reverseData: !1, classNames: { chart: "ct-chart-line", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", line: "ct-line", point: "ct-point", area: "ct-area", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Line = c.Base.extend({ constructor: e, createChart: d }) }(window, document, a), function (a, b, c) { - "use strict"; function d(a) { - var b, d; a.distributeSeries ? (b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), b.normalized.series = b.normalized.series.map(function (a) { return [a] })) : b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : "")); var e = this.svg.elem("g").addClass(a.classNames.gridGroup), g = this.svg.elem("g"), h = this.svg.elem("g").addClass(a.classNames.labelGroup); if (a.stackBars && 0 !== b.normalized.series.length) { - var i = c.serialMap(b.normalized.series, function () { - return Array.prototype.slice.call(arguments).map(function (a) { return a }).reduce(function (a, b) { return { x: a.x + (b && b.x) || 0, y: a.y + (b && b.y) || 0 } }, { x: 0, y: 0 }) - }); d = c.getHighLow([i], a, a.horizontalBars ? "x" : "y") - } else d = c.getHighLow(b.normalized.series, a, a.horizontalBars ? "x" : "y"); d.high = +a.high || (0 === a.high ? 0 : d.high), d.low = +a.low || (0 === a.low ? 0 : d.low); var j, k, l, m, n, o = c.createChartRect(this.svg, a, f.padding); k = a.distributeSeries && a.stackBars ? b.normalized.labels.slice(0, 1) : b.normalized.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new c.AutoScaleAxis(c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })), l = n = void 0 === a.axisY.type ? new c.StepAxis(c.Axis.units.y, b.normalized.series, o, { ticks: k }) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, o, { ticks: k }) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, a.axisX), j = n = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 }))); var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0), q = []; l.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(e, o, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (d, e) { var f, h, i = e - (b.raw.series.length - 1) / 2; f = a.distributeSeries && !a.stackBars ? l.axisLength / b.normalized.series.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / b.normalized.series[e].length / 2, h = g.elem("g"), h.attr({ "ct:series-name": d.name, "ct:meta": c.serialize(d.meta) }), h.addClass([a.classNames.series, d.className || a.classNames.series + "-" + c.alphaNumerate(e)].join(" ")), b.normalized.series[e].forEach(function (g, k) { var r, s, t, u; if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? { x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, b.normalized.series[e]), y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, b.normalized.series[e]) } : { x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, b.normalized.series[e]), y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, b.normalized.series[e]) }, l instanceof c.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) { var v = {}; v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], !a.stackBars || "accumulate" !== a.stackMode && a.stackMode ? (v[l.counterUnits.pos + "1"] = p, v[l.counterUnits.pos + "2"] = r[l.counterUnits.pos]) : (v[l.counterUnits.pos + "1"] = t, v[l.counterUnits.pos + "2"] = q[k]), v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1); var w = c.getMetaData(d, k); s = h.elem("line", v, a.classNames.bar).attr({ "ct:value": [g.x, g.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(w) }), this.eventEmitter.emit("draw", c.extend({ type: "bar", value: g, index: k, meta: w, series: d, seriesIndex: e, axisX: m, axisY: n, chartRect: o, group: h, element: s }, v)) } }.bind(this)) }.bind(this)), this.eventEmitter.emit("created", { bounds: j.bounds, chartRect: o, axisX: m, axisY: n, svg: this.svg, options: a }) - } function e(a, b, d, e) { c.Bar["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 30, onlyInteger: !1 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, high: void 0, low: void 0, referenceValue: 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, seriesBarDistance: 15, stackBars: !1, stackMode: "accumulate", horizontalBars: !1, distributeSeries: !1, reverseData: !1, showGridBackground: !1, classNames: { chart: "ct-chart-bar", horizontalBars: "ct-horizontal-bars", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", bar: "ct-bar", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Bar = c.Base.extend({ constructor: e, createChart: d }) - }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c) { var d = b.x > a.x; return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle" } function e(a) { var b, e, f, h, i, j = c.normalizeData(this.data), k = [], l = a.startAngle; this.svg = c.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = c.createChartRect(this.svg, a, g.padding), f = Math.min(e.width() / 2, e.height() / 2), i = a.total || j.normalized.series.reduce(function (a, b) { return a + b }, 0); var m = c.quantity(a.donutWidth); "%" === m.unit && (m.value *= f / 100), f -= a.donut && !a.donutSolid ? m.value / 2 : 0, h = "outside" === a.labelPosition || a.donut && !a.donutSolid ? f : "center" === a.labelPosition ? 0 : a.donutSolid ? f - m.value / 2 : f / 2, h += a.labelOffset; var n = { x: e.x1 + e.width() / 2, y: e.y2 + e.height() / 2 }, o = 1 === j.raw.series.filter(function (a) { return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a }).length; j.raw.series.forEach(function (a, b) { k[b] = this.svg.elem("g", null, null) }.bind(this)), a.showLabel && (b = this.svg.elem("g", null, null)), j.raw.series.forEach(function (e, g) { if (0 !== j.normalized.series[g] || !a.ignoreEmptyValues) { k[g].attr({ "ct:series-name": e.name }), k[g].addClass([a.classNames.series, e.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var p = i > 0 ? l + j.normalized.series[g] / i * 360 : 0, q = Math.max(0, l - (0 === g || o ? 0 : .2)); p - q >= 359.99 && (p = q + 359.99); var r, s, t, u = c.polarToCartesian(n.x, n.y, f, q), v = c.polarToCartesian(n.x, n.y, f, p), w = new c.Svg.Path(!a.donut || a.donutSolid).move(v.x, v.y).arc(f, f, 0, p - l > 180, 0, u.x, u.y); a.donut ? a.donutSolid && (t = f - m.value, r = c.polarToCartesian(n.x, n.y, t, l - (0 === g || o ? 0 : .2)), s = c.polarToCartesian(n.x, n.y, t, p), w.line(r.x, r.y), w.arc(t, t, 0, p - l > 180, 1, s.x, s.y)) : w.line(n.x, n.y); var x = a.classNames.slicePie; a.donut && (x = a.classNames.sliceDonut, a.donutSolid && (x = a.classNames.sliceDonutSolid)); var y = k[g].elem("path", { d: w.stringify() }, x); if (y.attr({ "ct:value": j.normalized.series[g], "ct:meta": c.serialize(e.meta) }), a.donut && !a.donutSolid && (y._node.style.strokeWidth = m.value + "px"), this.eventEmitter.emit("draw", { type: "slice", value: j.normalized.series[g], totalDataSum: i, index: g, meta: e.meta, series: e, group: k[g], element: y, path: w.clone(), center: n, radius: f, startAngle: l, endAngle: p }), a.showLabel) { var z; z = 1 === j.raw.series.length ? { x: n.x, y: n.y } : c.polarToCartesian(n.x, n.y, h, l + (p - l) / 2); var A; A = j.normalized.labels && !c.isFalseyButZero(j.normalized.labels[g]) ? j.normalized.labels[g] : j.normalized.series[g]; var B = a.labelInterpolationFnc(A, g); if (B || 0 === B) { var C = b.elem("text", { dx: z.x, dy: z.y, "text-anchor": d(n, z, a.labelDirection) }, a.classNames.label).text("" + B); this.eventEmitter.emit("draw", { type: "label", index: g, group: b, element: C, text: "" + B, x: z.x, y: z.y }) } } l = p } }.bind(this)), this.eventEmitter.emit("created", { chartRect: e, svg: this.svg, options: a }) } function f(a, b, d, e) { c.Pie["super"].constructor.call(this, a, b, g, c.extend({}, g, d), e) } var g = { width: void 0, height: void 0, chartPadding: 5, classNames: { chartPie: "ct-chart-pie", chartDonut: "ct-chart-donut", series: "ct-series", slicePie: "ct-slice-pie", sliceDonut: "ct-slice-donut", sliceDonutSolid: "ct-slice-donut-solid", label: "ct-label" }, startAngle: 0, total: void 0, donut: !1, donutSolid: !1, donutWidth: 60, showLabel: !0, labelOffset: 0, labelPosition: "inside", labelInterpolationFnc: c.noop, labelDirection: "neutral", reverseData: !1, ignoreEmptyValues: !1 }; c.Pie = c.Base.extend({ constructor: f, createChart: e, determineAnchorPosition: d }) }(window, document, a), a -}); - -var i, l, selectedLine = null; - -/* Navigate to hash without browser history entry */ -var navigateToHash = function () { - if (window.history !== undefined && window.history.replaceState !== undefined) { - window.history.replaceState(undefined, undefined, this.getAttribute("href")); - } -}; - -var hashLinks = document.getElementsByClassName('navigatetohash'); -for (i = 0, l = hashLinks.length; i < l; i++) { - hashLinks[i].addEventListener('click', navigateToHash); -} - -/* Switch test method */ -var switchTestMethod = function () { - var method = this.getAttribute("value"); - console.log("Selected test method: " + method); - - var lines, i, l, coverageData, lineAnalysis, cells; - - lines = document.querySelectorAll('.lineAnalysis tr'); - - for (i = 1, l = lines.length; i < l; i++) { - coverageData = JSON.parse(lines[i].getAttribute('data-coverage').replace(/'/g, '"')); - lineAnalysis = coverageData[method]; - cells = lines[i].querySelectorAll('td'); - if (lineAnalysis === undefined) { - lineAnalysis = coverageData.AllTestMethods; - if (lineAnalysis.LVS !== 'gray') { - cells[0].setAttribute('class', 'red'); - cells[1].innerText = cells[1].textContent = '0'; - cells[4].setAttribute('class', 'lightred'); - } - } else { - cells[0].setAttribute('class', lineAnalysis.LVS); - cells[1].innerText = cells[1].textContent = lineAnalysis.VC; - cells[4].setAttribute('class', 'light' + lineAnalysis.LVS); - } - } -}; - -var testMethods = document.getElementsByClassName('switchtestmethod'); -for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].addEventListener('change', switchTestMethod); -} - -/* Highlight test method by line */ -var toggleLine = function () { - if (selectedLine === this) { - selectedLine = null; - } else { - selectedLine = null; - unhighlightTestMethods(); - highlightTestMethods.call(this); - selectedLine = this; - } - -}; -var highlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var lineAnalysis; - var coverageData = JSON.parse(this.getAttribute('data-coverage').replace(/'/g, '"')); - var testMethods = document.getElementsByClassName('testmethod'); - - for (i = 0, l = testMethods.length; i < l; i++) { - lineAnalysis = coverageData[testMethods[i].id]; - if (lineAnalysis === undefined) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } else { - testMethods[i].className += ' light' + lineAnalysis.LVS; - } - } -}; -var unhighlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var testMethods = document.getElementsByClassName('testmethod'); - for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } -}; -var coverableLines = document.getElementsByClassName('coverableline'); -for (i = 0, l = coverableLines.length; i < l; i++) { - coverableLines[i].addEventListener('click', toggleLine); - coverableLines[i].addEventListener('mouseenter', highlightTestMethods); - coverableLines[i].addEventListener('mouseleave', unhighlightTestMethods); -} - -/* History charts */ -var renderChart = function (chart) { - // Remove current children (e.g. PNG placeholder) - while (chart.firstChild) { - chart.firstChild.remove(); - } - - var chartData = window[chart.getAttribute('data-data')]; - var options = { - axisY: { - type: undefined, - onlyInteger: true - }, - lineSmooth: false, - low: 0, - high: 100, - scaleMinSpace: 20, - onlyInteger: true, - fullWidth: true - }; - var lineChart = new Chartist.Line(chart, { - labels: [], - series: chartData.series - }, options); - - /* Zoom */ - var zoomButtonDiv = document.createElement("div"); - zoomButtonDiv.className = "toggleZoom"; - var zoomButtonLink = document.createElement("a"); - zoomButtonLink.setAttribute("href", ""); - var zoomButtonText = document.createElement("i"); - zoomButtonText.className = "icon-search-plus"; - - zoomButtonLink.appendChild(zoomButtonText); - zoomButtonDiv.appendChild(zoomButtonLink); - - chart.appendChild(zoomButtonDiv); - - zoomButtonDiv.addEventListener('click', function (event) { - event.preventDefault(); - - if (options.axisY.type === undefined) { - options.axisY.type = Chartist.AutoScaleAxis; - zoomButtonText.className = "icon-search-minus"; - } else { - options.axisY.type = undefined; - zoomButtonText.className = "icon-search-plus"; - } - - lineChart.update(null, options); - }); - - var tooltip = document.createElement("div"); - tooltip.className = "tooltip"; - - chart.appendChild(tooltip); - - /* Tooltips */ - var showToolTip = function () { - var point = this; - var index = [].slice.call(chart.getElementsByClassName('ct-point')).indexOf(point); - - tooltip.innerHTML = chartData.tooltips[index % chartData.tooltips.length]; - tooltip.style.display = 'block'; - }; - - var moveToolTip = function (event) { - var box = chart.getBoundingClientRect(); - var left = event.pageX - box.left - window.pageXOffset; - var top = event.pageY - box.top - window.pageYOffset; - - left = left + 20; - top = top - tooltip.offsetHeight / 2; - - if (left + tooltip.offsetWidth > box.width) { - left -= tooltip.offsetWidth + 40; - } - - if (top < 0) { - top = 0; - } - - if (top + tooltip.offsetHeight > box.height) { - top = box.height - tooltip.offsetHeight; - } - - tooltip.style.left = left + 'px'; - tooltip.style.top = top + 'px'; - }; - - var hideToolTip = function () { - tooltip.style.display = 'none'; - }; - chart.addEventListener('mousemove', moveToolTip); - - lineChart.on('created', function () { - var chartPoints = chart.getElementsByClassName('ct-point'); - for (i = 0, l = chartPoints.length; i < l; i++) { - chartPoints[i].addEventListener('mousemove', showToolTip); - chartPoints[i].addEventListener('mouseout', hideToolTip); - } - }); -}; - -var charts = document.getElementsByClassName('historychart'); -for (i = 0, l = charts.length; i < l; i++) { - renderChart(charts[i]); -} - -var assemblies = [ - { - "name": "EntityFrameworkCore.FSharp", - "classes": [ - { "name": "EntityFrameworkCore.FSharp.Conversion", "rp": "EntityFrameworkCore.FSharp_Conversion.htm", "cl": 0, "ucl": 6, "cal": 6, "tl": 21, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.EFCoreFSharpServices", "rp": "EntityFrameworkCore.FSharp_EFCoreFSharpServices.htm", "cl": 11, "ucl": 0, "cal": 11, "tl": 26, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.EntityFrameworkExtensions", "rp": "EntityFrameworkCore.FSharp_EntityFrameworkExtensions.htm", "cl": 5, "ucl": 15, "cal": 20, "tl": 67, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Extensions", "rp": "EntityFrameworkCore.FSharp_Extensions.htm", "cl": 9, "ucl": 17, "cal": 26, "tl": 56, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities", "rp": "EntityFrameworkCore.FSharp_IndentedStringBuilderUtilities.htm", "cl": 17, "ucl": 13, "cal": 30, "tl": 73, "ct": "LineCoverage", "mc": "-", "cb": 4, "tb": 10, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Internal.FSharpHelper", "rp": "EntityFrameworkCore.FSharp_FSharpHelper.htm", "cl": 146, "ucl": 268, "cal": 414, "tl": 660, "ct": "LineCoverage", "mc": "-", "cb": 25, "tb": 177, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Internal.FSharpUtilities", "rp": "EntityFrameworkCore.FSharp_FSharpUtilities.htm", "cl": 31, "ucl": 30, "cal": 61, "tl": 261, "ct": "LineCoverage", "mc": "-", "cb": 22, "tb": 50, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationOperationGenerator", "rp": "EntityFrameworkCore.FSharp_FSharpMigrationOperationGenerator.htm", "cl": 0, "ucl": 223, "cal": 223, "tl": 740, "ct": "LineCoverage", "mc": "-", "cb": 3, "tb": 50, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGenerator", "rp": "EntityFrameworkCore.FSharp_FSharpMigrationsGenerator.htm", "cl": 0, "ucl": 104, "cal": 104, "tl": 370, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 22, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsGeneratorDependencies", "rp": "EntityFrameworkCore.FSharp_FSharpMigrationsGeneratorDependencies.htm", "cl": 0, "ucl": 10, "cal": 10, "tl": 37, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationsScaffolder", "rp": "EntityFrameworkCore.FSharp_FSharpMigrationsScaffolder.htm", "cl": 0, "ucl": 27, "cal": 27, "tl": 53, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 6, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator", "rp": "EntityFrameworkCore.FSharp_FSharpSnapshotGenerator.htm", "cl": 104, "ucl": 238, "cal": 342, "tl": 751, "ct": "LineCoverage", "mc": "-", "cb": 24, "tb": 88, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.OptionConverter`1", "rp": "EntityFrameworkCore.FSharp_OptionConverter_1.htm", "cl": 0, "ucl": 3, "cal": 3, "tl": 21, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Scaffolding.AttributeWriter", "rp": "EntityFrameworkCore.FSharp_AttributeWriter.htm", "cl": 4, "ucl": 2, "cal": 6, "tl": 259, "ct": "LineCoverage", "mc": "-", "cb": 1, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Scaffolding.FSharpDbContextGenerator", "rp": "EntityFrameworkCore.FSharp_FSharpDbContextGenerator.htm", "cl": 54, "ucl": 47, "cal": 101, "tl": 668, "ct": "LineCoverage", "mc": "-", "cb": 6, "tb": 22, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Scaffolding.FSharpEntityTypeGenerator", "rp": "EntityFrameworkCore.FSharp_FSharpEntityTypeGenerator.htm", "cl": 20, "ucl": 10, "cal": 30, "tl": 259, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 4, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Scaffolding.Internal.FSharpModelGenerator", "rp": "EntityFrameworkCore.FSharp_FSharpModelGenerator.htm", "cl": 56, "ucl": 1, "cal": 57, "tl": 120, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 4, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes", "rp": "EntityFrameworkCore.FSharp_ScaffoldingTypes.htm", "cl": 0, "ucl": 0, "cal": 0, "tl": 0, "ct": "MethodCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "EntityFrameworkCore.FSharp.SharedTypeExtensions", "rp": "EntityFrameworkCore.FSharp_SharedTypeExtensions.htm", "cl": 4, "ucl": 16, "cal": 20, "tl": 69, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 14, "lch": [], "bch": [], "hc": [] }, - ]}, -]; - -var historicCoverageExecutionTimes = []; - -var riskHotspotMetrics = [ - { "name": "Cyclomatic complexity", "explanationUrl": "https://en.wikipedia.org/wiki/Cyclomatic_complexity" }, - { "name": "NPath complexity", "explanationUrl": "https://modess.io/npath-complexity-cyclomatic-complexity-explained" }, - { "name": "Crap Score", "explanationUrl": "https://googletesting.blogspot.de/2011/02/this-code-is-crap.html" }, -]; - -var riskHotspots = [ - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator", "reportPath": "EntityFrameworkCore.FSharp_FSharpSnapshotGenerator.htm", "methodName": "Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator::generateEntityTypeAnnotations(System.String,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)", "methodShortName": "generateEntityTypeAnnotations(...)", "fileIndex": 0, "line": 355, - "metrics": [ - { "value": 16, "exceeded": false }, - { "value": 4096, "exceeded": true }, - { "value": 16.5, "exceeded": true }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator", "reportPath": "EntityFrameworkCore.FSharp_FSharpSnapshotGenerator.htm", "methodName": "Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator::generateForeignKey(System.String,Microsoft.EntityFrameworkCore.Metadata.IForeignKey,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)", "methodShortName": "generateForeignKey(...)", "fileIndex": 0, "line": 501, - "metrics": [ - { "value": 15, "exceeded": false }, - { "value": 4096, "exceeded": true }, - { "value": 0, "exceeded": false }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Internal.FSharpHelper", "reportPath": "EntityFrameworkCore.FSharp_FSharpHelper.htm", "methodName": "System.String EntityFrameworkCore.FSharp.Internal.FSharpHelper::unknownLiteral(System.Object)", "methodShortName": "unknownLiteral(...)", "fileIndex": 0, "line": 501, - "metrics": [ - { "value": 32, "exceeded": true }, - { "value": 1536, "exceeded": true }, - { "value": 731.26, "exceeded": true }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Internal.FSharpHelper", "reportPath": "EntityFrameworkCore.FSharp_FSharpHelper.htm", "methodName": "System.Boolean EntityFrameworkCore.FSharp.Internal.FSharpHelper::handleExpression(System.Linq.Expressions.Expression,System.Boolean,Microsoft.EntityFrameworkCore.Internal.IndentedStringBuilder)", "methodShortName": "handleExpression(...)", "fileIndex": 0, "line": 306, - "metrics": [ - { "value": 14, "exceeded": false }, - { "value": 512, "exceeded": true }, - { "value": 0, "exceeded": false }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Internal.FSharpUtilities", "reportPath": "EntityFrameworkCore.FSharp_FSharpUtilities.htm", "methodName": "System.String EntityFrameworkCore.FSharp.Internal.FSharpUtilities::getTypeName(System.Type)", "methodShortName": "getTypeName(...)", "fileIndex": 0, "line": 216, - "metrics": [ - { "value": 11, "exceeded": false }, - { "value": 512, "exceeded": true }, - { "value": 11.17, "exceeded": false }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpMigrationOperationGenerator", "reportPath": "EntityFrameworkCore.FSharp_FSharpMigrationOperationGenerator.htm", "methodName": "System.Int32 .$FSharpMigrationOperationGenerator/parameters@643-5::GenerateNext(System.Collections.Generic.IEnumerable`1&)", "methodShortName": "GenerateNext(...)", "fileIndex": 0, "line": 643, - "metrics": [ - { "value": 28, "exceeded": false }, - { "value": 512, "exceeded": true }, - { "value": 413.81, "exceeded": true }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Internal.FSharpHelper", "reportPath": "EntityFrameworkCore.FSharp_FSharpHelper.htm", "methodName": "System.Boolean EntityFrameworkCore.FSharp.Internal.FSharpHelper::isIdentifierPartCharacter(System.Char)", "methodShortName": "isIdentifierPartCharacter(...)", "fileIndex": 0, "line": 412, - "metrics": [ - { "value": 14, "exceeded": false }, - { "value": 288, "exceeded": true }, - { "value": 0, "exceeded": false }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Internal.FSharpHelper", "reportPath": "EntityFrameworkCore.FSharp_FSharpHelper.htm", "methodName": "System.String EntityFrameworkCore.FSharp.Internal.FSharpHelper::IdentifierWithScope(System.String,System.Collections.Generic.ICollection`1)", "methodShortName": "IdentifierWithScope(...)", "fileIndex": 0, "line": 465, - "metrics": [ - { "value": 13, "exceeded": false }, - { "value": 256, "exceeded": true }, - { "value": 0, "exceeded": false }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Migrations.Design.FSharpSnapshotGenerator", "reportPath": "EntityFrameworkCore.FSharp_FSharpSnapshotGenerator.htm", "methodName": "System.Int32 .$FSharpSnapshotGenerator/clo@129-90::GenerateNext(System.Collections.Generic.IEnumerable`1&)", "methodShortName": "GenerateNext(...)", "fileIndex": 0, "line": 129, - "metrics": [ - { "value": 14, "exceeded": false }, - { "value": 64, "exceeded": false }, - { "value": 103.2, "exceeded": true }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Internal.FSharpUtilities", "reportPath": "EntityFrameworkCore.FSharp_FSharpUtilities.htm", "methodName": "System.String EntityFrameworkCore.FSharp.Internal.FSharpUtilities::generateLiteral(System.Object)", "methodShortName": "generateLiteral(...)", "fileIndex": 0, "line": 239, - "metrics": [ - { "value": 13, "exceeded": false }, - { "value": 22, "exceeded": false }, - { "value": 99.53, "exceeded": true }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Internal.FSharpHelper", "reportPath": "EntityFrameworkCore.FSharp_FSharpHelper.htm", "methodName": "System.String EntityFrameworkCore.FSharp.Internal.FSharpHelper::ReferenceFullName(System.Type,System.Boolean)", "methodShortName": "ReferenceFullName(...)", "fileIndex": 0, "line": 146, - "metrics": [ - { "value": 8, "exceeded": false }, - { "value": 32, "exceeded": false }, - { "value": 49.67, "exceeded": true }, - ]}, - { - "assembly": "EntityFrameworkCore.FSharp", "class": "EntityFrameworkCore.FSharp.Scaffolding.FSharpEntityTypeGenerator", "reportPath": "EntityFrameworkCore.FSharp_FSharpEntityTypeGenerator.htm", "methodName": "System.Int32 .$FSharpEntityTypeGenerator/-ctor@35-3::GenerateNext(System.Collections.Generic.IEnumerable`1>&)", "methodShortName": "GenerateNext(...)", "fileIndex": 0, "line": 35, - "metrics": [ - { "value": 23, "exceeded": false }, - { "value": 0, "exceeded": false }, - { "value": 23, "exceeded": true }, - ]}, -]; - -var branchCoverageAvailable = true; - - -var translations = { -'top': 'Top:', -'all': 'All', -'assembly': 'Assembly', -'class': 'Class', -'method': 'Method', -'lineCoverage': 'LineCoverage', -'noGrouping': 'No grouping', -'byAssembly': 'By assembly', -'byNamespace': 'By namespace, Level:', -'all': 'All', -'collapseAll': 'Collapse all', -'expandAll': 'Expand all', -'grouping': 'Grouping:', -'filter': 'Filter:', -'name': 'Name', -'covered': 'Covered', -'uncovered': 'Uncovered', -'coverable': 'Coverable', -'total': 'Total', -'coverage': 'Line coverage', -'branchCoverage': 'Branch coverage', -'history': 'Coverage History', -'compareHistory': 'Compare with:', -'date': 'Date', -'allChanges': 'All changes', -'lineCoverageIncreaseOnly': 'Line coverage: Increase only', -'lineCoverageDecreaseOnly': 'Line coverage: Decrease only', -'branchCoverageIncreaseOnly': 'Branch coverage: Increase only', -'branchCoverageDecreaseOnly': 'Branch coverage: Decrease only' -}; - - -!function(e){function r(r){for(var n,f,i=r[0],l=r[1],a=r[2],c=0,s=[];c",this._properties=e&&e.properties||{},this._zoneDelegate=new u(this,this._parent&&this._parent._zoneDelegate,e)}return e.assertZonePatched=function(){if(t.Promise!==O.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(e,"root",{get:function(){for(var t=e.current;t.parent;)t=t.parent;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"current",{get:function(){return M.zone},enumerable:!0,configurable:!0}),Object.defineProperty(e,"currentTask",{get:function(){return j},enumerable:!0,configurable:!0}),e.__load_patch=function(i,a){if(O.hasOwnProperty(i)){if(o)throw Error("Already loaded patch: "+i)}else if(!t["__Zone_disable_"+i]){var c="Zone:"+i;n(c),O[i]=a(t,e,A),r(c,c)}},Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),e.prototype.get=function(t){var e=this.getZoneWith(t);if(e)return e._properties[t]},e.prototype.getZoneWith=function(t){for(var e=this;e;){if(e._properties.hasOwnProperty(t))return e;e=e._parent}return null},e.prototype.fork=function(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)},e.prototype.wrap=function(t,e){if("function"!=typeof t)throw new Error("Expecting function got: "+t);var n=this._zoneDelegate.intercept(this,t,e),r=this;return function(){return r.runGuarded(n,this,arguments,e)}},e.prototype.run=function(t,e,n,r){M={parent:M,zone:this};try{return this._zoneDelegate.invoke(this,t,e,n,r)}finally{M=M.parent}},e.prototype.runGuarded=function(t,e,n,r){void 0===e&&(e=null),M={parent:M,zone:this};try{try{return this._zoneDelegate.invoke(this,t,e,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{M=M.parent}},e.prototype.runTask=function(t,e,n){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||y).name+"; Execution: "+this.name+")");if(t.state!==m||t.type!==T&&t.type!==S){var r=t.state!=w;r&&t._transitionTo(w,k),t.runCount++;var o=j;j=t,M={parent:M,zone:this};try{t.type==S&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,e,n)}catch(i){if(this._zoneDelegate.handleError(this,i))throw i}}finally{t.state!==m&&t.state!==E&&(t.type==T||t.data&&t.data.isPeriodic?r&&t._transitionTo(k,w):(t.runCount=0,this._updateTaskCount(t,-1),r&&t._transitionTo(m,w,m))),M=M.parent,j=o}}},e.prototype.scheduleTask=function(t){if(t.zone&&t.zone!==this)for(var e=this;e;){if(e===t.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+t.zone.name);e=e.parent}t._transitionTo(b,m);var n=[];t._zoneDelegates=n,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(r){throw t._transitionTo(E,b,m),this._zoneDelegate.handleError(this,r),r}return t._zoneDelegates===n&&this._updateTaskCount(t,1),t.state==b&&t._transitionTo(k,b),t},e.prototype.scheduleMicroTask=function(t,e,n,r){return this.scheduleTask(new s(_,t,e,n,r,void 0))},e.prototype.scheduleMacroTask=function(t,e,n,r,o){return this.scheduleTask(new s(S,t,e,n,r,o))},e.prototype.scheduleEventTask=function(t,e,n,r,o){return this.scheduleTask(new s(T,t,e,n,r,o))},e.prototype.cancelTask=function(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||y).name+"; Execution: "+this.name+")");t._transitionTo(x,k,w);try{this._zoneDelegate.cancelTask(this,t)}catch(e){throw t._transitionTo(E,x),this._zoneDelegate.handleError(this,e),e}return this._updateTaskCount(t,-1),t._transitionTo(m,x),t.runCount=0,t},e.prototype._updateTaskCount=function(t,e){var n=t._zoneDelegates;-1==e&&(t._zoneDelegates=null);for(var r=0;r0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:t})},t}(),s=function(){function e(n,r,o,i,a,c){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=n,this.source=r,this.data=i,this.scheduleFn=a,this.cancelFn=c,this.callback=o;var u=this;this.invoke=n===T&&i&&i.useG?e.invokeTask:function(){return e.invokeTask.call(t,u,this,arguments)}}return e.invokeTask=function(t,e,n){t||(t=this),I++;try{return t.runCount++,t.zone.runTask(t,e,n)}finally{1==I&&g(),I--}},Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(m,b)},e.prototype._transitionTo=function(t,e,n){if(this._state!==e&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+t+"', expecting state '"+e+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=t,t==m&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&void 0!==this.data.handleId?this.data.handleId.toString():Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}},e}(),f=D("setTimeout"),l=D("Promise"),p=D("then"),h=[],v=!1;function d(e){if(0===I&&0===h.length)if(i||t[l]&&(i=t[l].resolve(0)),i){var n=i[p];n||(n=i.then),n.call(i,g)}else t[f](g,0);e&&h.push(e)}function g(){if(!v){for(v=!0;h.length;){var t=h;h=[];for(var e=0;e=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}};Zone.__load_patch("ZoneAwarePromise",function(e,n,r){var o=Object.getOwnPropertyDescriptor,i=Object.defineProperty,a=r.symbol,c=[],u=a("Promise"),s=a("then"),f="__creationTrace__";r.onUnhandledError=function(t){if(r.showUncaughtError()){var e=t&&t.rejection;e?console.error("Unhandled Promise rejection:",e instanceof Error?e.message:e,"; Zone:",t.zone.name,"; Task:",t.task&&t.task.source,"; Value:",e,e instanceof Error?e.stack:void 0):console.error(t)}},r.microtaskDrainDone=function(){for(;c.length;)for(var t=function(){var t=c.shift();try{t.zone.runGuarded(function(){throw t})}catch(e){p(e)}};c.length;)t()};var l=a("unhandledPromiseRejectionHandler");function p(t){r.onUnhandledError(t);try{var e=n[l];e&&"function"==typeof e&&e.call(this,t)}catch(o){}}function h(t){return t&&t.then}function v(t){return t}function d(t){return z.reject(t)}var g=a("state"),y=a("value"),m=a("finally"),b=a("parentPromiseValue"),k=a("parentPromiseState"),w="Promise.then",x=null,E=!0,_=!1,S=0;function T(t,e){return function(n){try{j(t,e,n)}catch(r){j(t,!1,r)}}}var O=function(){var t=!1;return function(e){return function(){t||(t=!0,e.apply(null,arguments))}}},A="Promise resolved with itself",M=a("currentTaskTrace");function j(t,e,o){var a,u=O();if(t===o)throw new TypeError(A);if(t[g]===x){var s=null;try{"object"!=typeof o&&"function"!=typeof o||(s=o&&o.then)}catch(d){return u(function(){j(t,!1,d)})(),t}if(e!==_&&o instanceof z&&o.hasOwnProperty(g)&&o.hasOwnProperty(y)&&o[g]!==x)P(o),j(t,o[g],o[y]);else if(e!==_&&"function"==typeof s)try{s.call(o,u(T(t,e)),u(T(t,!1)))}catch(d){u(function(){j(t,!1,d)})()}else{t[g]=e;var l=t[y];if(t[y]=o,t[m]===m&&e===E&&(t[g]=t[k],t[y]=t[b]),e===_&&o instanceof Error){var p=n.currentTask&&n.currentTask.data&&n.currentTask.data[f];p&&i(o,M,{configurable:!0,enumerable:!1,writable:!0,value:p})}for(var h=0;h=0;n--)"function"==typeof t[n]&&(t[n]=h(t[n],e+"_"+n));return t}function x(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&void 0===t.set)}var E="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,_=!("nw"in m)&&void 0!==m.process&&"[object process]"==={}.toString.call(m.process),S=!_&&!E&&!(!g||!y.HTMLElement),T=void 0!==m.process&&"[object process]"==={}.toString.call(m.process)&&!E&&!(!g||!y.HTMLElement),O={},A=function(t){if(t=t||m.event){var e=O[t.type];e||(e=O[t.type]=d("ON_PROPERTY"+t.type));var n,r=this||t.target||m,o=r[e];if(S&&r===y&&"error"===t.type){var i=t;!0===(n=o&&o.call(this,i.message,i.filename,i.lineno,i.colno,i.error))&&t.preventDefault()}else null==(n=o&&o.apply(this,arguments))||n||t.preventDefault();return n}};function M(t,r,o){var i=e(t,r);if(!i&&o&&e(o,r)&&(i={enumerable:!0,configurable:!0}),i&&i.configurable){var a=d("on"+r+"patched");if(!t.hasOwnProperty(a)||!t[a]){delete i.writable,delete i.value;var c=i.get,u=i.set,s=r.substr(2),f=O[s];f||(f=O[s]=d("ON_PROPERTY"+s)),i.set=function(e){var n=this;n||t!==m||(n=m),n&&(n[f]&&n.removeEventListener(s,A),u&&u.apply(n,k),"function"==typeof e?(n[f]=e,n.addEventListener(s,A,!1)):n[f]=null)},i.get=function(){var e=this;if(e||t!==m||(e=m),!e)return null;var n=e[f];if(n)return n;if(c){var o=c&&c.call(this);if(o)return i.set.call(this,o),"function"==typeof e[b]&&e.removeAttribute(r),o}return null},n(t,r,i),t[a]=!0}}}function j(t,e,n){if(e)for(var r=0;r=0&&"function"==typeof r[i.cbIdx]?v(i.name,r[i.cbIdx],i,o):t.apply(e,r)}})}function N(t,e){t[d("OriginalDelegate")]=e}var Z=!1,R=!1;function F(){try{var t=y.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch(e){}return!1}function L(){if(Z)return R;Z=!0;try{var t=y.navigator.userAgent;-1===t.indexOf("MSIE ")&&-1===t.indexOf("Trident/")&&-1===t.indexOf("Edge/")||(R=!0)}catch(e){}return R}Zone.__load_patch("toString",function(t){var e=Function.prototype.toString,n=d("OriginalDelegate"),r=d("Promise"),o=d("Error"),i=function(){if("function"==typeof this){var i=this[n];if(i)return"function"==typeof i?e.call(i):Object.prototype.toString.call(i);if(this===Promise){var a=t[r];if(a)return e.call(a)}if(this===Error){var c=t[o];if(c)return e.call(c)}}return e.call(this)};i[n]=e,Function.prototype.toString=i;var a=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":a.call(this)}});var G=!1;if("undefined"!=typeof window)try{var X=Object.defineProperty({},"passive",{get:function(){G=!0}});window.addEventListener("test",X,X),window.removeEventListener("test",X,X)}catch(St){G=!1}var q={useG:!0},H={},U={},V=/^__zone_symbol__(\w+)(true|false)$/,Y="__zone_symbol__propagationStopped";function W(t,e,n){var o=n&&n.add||a,i=n&&n.rm||c,u=n&&n.listeners||"eventListeners",s=n&&n.rmAll||"removeAllListeners",h=d(o),v="."+o+":",g="prependListener",y="."+g+":",m=function(t,e,n){if(!t.isRemoved){var r=t.callback;"object"==typeof r&&r.handleEvent&&(t.callback=function(t){return r.handleEvent(t)},t.originalDelegate=r),t.invoke(t,e,[n]);var o=t.options;o&&"object"==typeof o&&o.once&&e[i].call(e,n.type,t.originalDelegate?t.originalDelegate:t.callback,o)}},b=function(e){if(e=e||t.event){var n=this||e.target||t,r=n[H[e.type][l]];if(r)if(1===r.length)m(r[0],n,e);else for(var o=r.slice(),i=0;i1?new i(e,n):new i(e),s=t.ObjectGetOwnPropertyDescriptor(u,"onmessage");return s&&!1===s.configurable?(a=t.ObjectCreate(u),c=u,[r,o,"send","close"].forEach(function(e){a[e]=function(){var n=t.ArraySlice.call(arguments);if(e===r||e===o){var i=n.length>0?n[0]:void 0;if(i){var c=Zone.__symbol__("ON_PROPERTY"+i);u[c]=a[c]}}return u[e].apply(u,n)}})):a=u,t.patchOnProperties(a,["close","error","message","open"],c),a};var a=e.WebSocket;for(var c in i)a[c]=i[c]}(t,e),Zone[t.symbol("patchEvents")]=!0}}Zone.__load_patch("util",function(t,r,u){u.patchOnProperties=j,u.patchMethod=z,u.bindArguments=w,u.patchMacroTask=C;var s=r.__symbol__("BLACK_LISTED_EVENTS"),v=r.__symbol__("UNPATCHED_EVENTS");t[v]&&(t[s]=t[v]),t[s]&&(r[s]=r[v]=t[s]),u.patchEventPrototype=Q,u.patchEventTarget=W,u.isIEOrEdge=L,u.ObjectDefineProperty=n,u.ObjectGetOwnPropertyDescriptor=e,u.ObjectCreate=o,u.ArraySlice=i,u.patchClass=P,u.wrapWithCurrentZone=h,u.filterProperties=yt,u.attachOriginToPatched=N,u._redefineProperty=rt,u.patchCallbacks=K,u.getGlobalObjects=function(){return{globalSources:U,zoneSymbolEventNames:H,eventNames:gt,isBrowser:S,isMix:T,isNode:_,TRUE_STR:f,FALSE_STR:l,ZONE_SYMBOL_PREFIX:p,ADD_EVENT_LISTENER_STR:a,REMOVE_EVENT_LISTENER_STR:c}}}),function(t){t.__zone_symbol__legacyPatch=function(){var e=t.Zone;e.__load_patch("registerElement",function(t,e,n){!function(t,e){var n=e.getGlobalObjects();(n.isBrowser||n.isMix)&&"registerElement"in t.document&&e.patchCallbacks(e,document,"Document","registerElement",["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"])}(t,n)}),e.__load_patch("EventTargetLegacy",function(t,e,n){kt(t,n),wt(n,t)})}}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global);var xt=d("zoneTask");function Et(t,e,n,r){var o=null,i=null;n+=r;var a={};function c(e){var n=e.data;return n.args[0]=function(){try{e.invoke.apply(this,arguments)}finally{e.data&&e.data.isPeriodic||("number"==typeof n.handleId?delete a[n.handleId]:n.handleId&&(n.handleId[xt]=null))}},n.handleId=o.apply(t,n.args),e}function u(t){return i(t.data.handleId)}o=z(t,e+=r,function(n){return function(o,i){if("function"==typeof i[0]){var s=v(e,i[0],{isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?i[1]||0:void 0,args:i},c,u);if(!s)return s;var f=s.data.handleId;return"number"==typeof f?a[f]=s:f&&(f[xt]=s),f&&f.ref&&f.unref&&"function"==typeof f.ref&&"function"==typeof f.unref&&(s.ref=f.ref.bind(f),s.unref=f.unref.bind(f)),"number"==typeof f||f?f:s}return n.apply(t,i)}}),i=z(t,n,function(e){return function(n,r){var o,i=r[0];"number"==typeof i?o=a[i]:(o=i&&i[xt])||(o=i),o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&("number"==typeof i?delete a[i]:i&&(i[xt]=null),o.zone.cancelTask(o)):e.apply(t,r)}})}function _t(t,e){if(!Zone[e.symbol("patchEventTarget")]){for(var n=e.getGlobalObjects(),r=n.eventNames,o=n.zoneSymbolEventNames,i=n.TRUE_STR,a=n.FALSE_STR,c=n.ZONE_SYMBOL_PREFIX,u=0;u0){var o=t.invoke;t.invoke=function(){for(var n=r.__zone_symbol__loadfalse,i=0;idocument.F=Object<\/script>"),t.close(),l=t.F;n--;)delete l.prototype[i[n]];return l()};t.exports=Object.create||function(t,e){var n;return null!==t?(f.prototype=r(t),n=new f,f.prototype=null,n[s]=t):n=l(),void 0===e?n:o(n,e)},a[s]=!0},"3caY":function(t,e,n){var r=n("wA6s"),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):i(e+a(e*e+1)):e}})},"3vMK":function(t,e,n){"use strict";var r=n("6XUM"),o=n("/Ybd"),i=n("wIVT"),a=n("m41k")("hasInstance"),c=Function.prototype;a in c||o.f(c,a,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},"3xQm":function(t,e,n){var r,o,i,a,c,u,s,f=n("ocAm"),l=n("7gGY").f,p=n("ezU2"),h=n("Ox9q").set,v=n("4U6Q"),d=f.MutationObserver||f.WebKitMutationObserver,g=f.process,y=f.Promise,m="process"==p(g),b=l(f,"queueMicrotask"),k=b&&b.value;k||(r=function(){var t,e;for(m&&(t=g.domain)&&t.exit();o;){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},m?a=function(){g.nextTick(r)}:d&&!/(iphone|ipod|ipad).*applewebkit/i.test(v)?(c=!0,u=document.createTextNode(""),new d(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c}):y&&y.resolve?(s=y.resolve(void 0),a=function(){s.then(r)}):a=function(){h.call(f,r)}),t.exports=k||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},"48xZ":function(t,e,n){var r=n("n/2t"),o=Math.abs,i=Math.pow,a=i(2,-52),c=i(2,-23),u=i(2,127)*(2-c),s=i(2,-126);t.exports=Math.fround||function(t){var e,n,i=o(t),f=r(t);return iu||n!=n?f*(1/0):f*n}},"4GtL":function(t,e,n){"use strict";var r=n("VCQ8"),o=n("7Oj1"),i=n("xpLY"),a=Math.min;t.exports=[].copyWithin||function(t,e){var n=r(this),c=i(n.length),u=o(t,c),s=o(e,c),f=arguments.length>2?arguments[2]:void 0,l=a((void 0===f?c:o(f,c))-s,c-u),p=1;for(s0;)s in n?n[u]=n[s]:delete n[u],u+=p,s+=p;return n}},"4Kt7":function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("sub")},{sub:function(){return o(this,"sub","","")}})},"4U6Q":function(t,e,n){var r=n("Ew/G");t.exports=r("navigator","userAgent")||""},"4axp":function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("blink")},{blink:function(){return o(this,"blink","","")}})},"5MmU":function(t,e,n){var r=n("m41k"),o=n("pz+c"),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},"5eAq":function(t,e,n){var r=n("wA6s"),o=n("xvwj");r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},"5y2d":function(t,e,n){var r=n("T69T"),o=n("/Ybd"),i=n("F26l"),a=n("ZRqE");t.exports=r?Object.defineProperties:function(t,e){i(t);for(var n,r=a(e),c=r.length,u=0;c>u;)o.f(t,n=r[u++],e[n]);return t}},"5zDw":function(t,e,n){var r=n("wA6s"),o=n("ldur");r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},"6CEi":function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").find,i=n("A1Hp"),a=!0;"find"in[]&&Array(1).find(function(){a=!1}),r({target:"Array",proto:!0,forced:a},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},"6XUM":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"6fhQ":function(t,e,n){"use strict";var r=n("wA6s"),o=n("Neub"),i=n("VCQ8"),a=n("rG8t"),c=n("geuh"),u=[].sort,s=[1,2,3],f=a(function(){s.sort(void 0)}),l=a(function(){s.sort(null)}),p=c("sort");r({target:"Array",proto:!0,forced:f||!l||p},{sort:function(t){return void 0===t?u.call(i(this)):u.call(i(this),o(t))}})},"6lQQ":function(t,e,n){"use strict";var r=n("wA6s"),o=n("OXtp").indexOf,i=n("geuh"),a=[].indexOf,c=!!a&&1/[1].indexOf(1,-0)<0,u=i("indexOf");r({target:"Array",proto:!0,forced:c||u},{indexOf:function(t){return c?a.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},"6oxo":function(t,e,n){var r=n("wA6s"),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(t){return o(t)/i}})},"6q6p":function(t,e,n){"use strict";var r=n("wA6s"),o=n("6XUM"),i=n("erNl"),a=n("7Oj1"),c=n("xpLY"),u=n("EMtK"),s=n("DYg9"),f=n("lRyB"),l=n("m41k")("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!f("slice")},{slice:function(t,e){var n,r,f,v=u(this),d=c(v.length),g=a(t,d),y=a(void 0===e?d:e,d);if(i(v)&&("function"!=typeof(n=v.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[l])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(v,g,y);for(r=new(void 0===n?Array:n)(h(y-g,0)),f=0;g=0;)p[e]=s((n+=p[e])/t),n=n%t*1e7},y=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==p[t]){var n=String(p[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e};if(l<0||l>20)throw RangeError("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(h="-",u=-u),u>1e-21)if(n=(e=function(t){for(var e=0,n=u*f(2,69,1);n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}()-69)<0?u*f(2,-e,1):u/f(2,e,1),n*=4503599627370496,(e=52-e)>0){for(d(0,n),r=l;r>=7;)d(1e7,0),r-=7;for(d(f(10,r,1),0),r=e-1;r>=23;)g(1<<23),r-=23;g(1<0?h+((c=v.length)<=l?"0."+a.call("0",l-c)+v:v.slice(0,c-l)+"."+v.slice(c-l)):h+v}})},"8ydS":function(t,e,n){n("wA6s")({target:"Date",stat:!0},{now:function(){return(new Date).getTime()}})},"94Vg":function(t,e,n){var r=n("E7aN"),o=n("OG5q"),i=n("ydtP"),a=n("/Ybd").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},"9Vb/":function(t,e,n){var r=n("rG8t");t.exports=function(t){return r(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3})}},A1Hp:function(t,e,n){var r=n("m41k"),o=n("2RDa"),i=n("HEFl"),a=r("unscopables"),c=Array.prototype;null==c[a]&&i(c,a,o(null)),t.exports=function(t){c[a][t]=!0}},A7hN:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("VCQ8"),a=n("wIVT"),c=n("cwa4");r({target:"Object",stat:!0,forced:o(function(){a(1)}),sham:!c},{getPrototypeOf:function(t){return a(i(t))}})},"Ay+M":function(t,e,n){var r=n("wA6s"),o=n("xvwj");r({global:!0,forced:parseFloat!=o},{parseFloat:o})},BaTD:function(t,e,n){n("wA6s")({target:"String",proto:!0},{repeat:n("EMWV")})},BcWx:function(t,e,n){"use strict";var r=n("wA6s"),o=n("rG8t"),i=n("DYg9");r({target:"Array",stat:!0,forced:o(function(){function t(){}return!(Array.of.call(t)instanceof t)})},{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)i(n,t,arguments[t++]);return n.length=e,n}})},BnCb:function(t,e,n){n("wA6s")({target:"Math",stat:!0},{sign:n("n/2t")})},COcp:function(t,e,n){n("wA6s")({target:"Number",stat:!0},{isInteger:n("Nvxz")})},CW9j:function(t,e,n){"use strict";var r=n("F26l"),o=n("LdO1");t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return o(r(this),"number"!==t)}},CwIO:function(t,e,n){var r=n("wA6s"),o=Math.abs,i=Math.sqrt;r({target:"Math",stat:!0},{hypot:function(t,e){for(var n,r,a=0,c=0,u=arguments.length,s=0;c0?(r=n/s)*r:n;return s===1/0?1/0:s*i(a)}})},"D+RQ":function(t,e,n){"use strict";var r=n("T69T"),o=n("ocAm"),i=n("MkZA"),a=n("2MGJ"),c=n("OG5q"),u=n("ezU2"),s=n("K6ZX"),f=n("LdO1"),l=n("rG8t"),p=n("2RDa"),h=n("KkqW").f,v=n("7gGY").f,d=n("/Ybd").f,g=n("jnLS").trim,y=o.Number,m=y.prototype,b="Number"==u(p(m)),k=function(t){var e,n,r,o,i,a,c,u,s=f(t,!1);if("string"==typeof s&&s.length>2)if(43===(e=(s=g(s)).charCodeAt(0))||45===e){if(88===(n=s.charCodeAt(2))||120===n)return NaN}else if(48===e){switch(s.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,c=0;co)return NaN;return parseInt(i,r)}return+s};if(i("Number",!y(" 0o1")||!y("0b1")||y("+0x1"))){for(var w,x=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof x&&(b?l(function(){m.valueOf.call(n)}):"Number"!=u(n))?s(new y(k(e)),n,x):k(e)},E=r?h(y):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;E.length>_;_++)c(y,w=E[_])&&!c(x,w)&&d(x,w,v(y,w));x.prototype=m,m.constructor=x,a(o,"Number",x)}},D94X:function(t,e,n){var r=n("wA6s"),o=n("n/2t"),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(t){return o(t=+t)*a(i(t),1/3)}})},DAme:function(t,e,n){"use strict";var r=n("8aNu"),o=n("M7Xk").getWeakData,i=n("F26l"),a=n("6XUM"),c=n("SM6+"),u=n("Rn6E"),s=n("kk6e"),f=n("OG5q"),l=n("XH/I"),p=l.set,h=l.getterFor,v=s.find,d=s.findIndex,g=0,y=function(t){return t.frozen||(t.frozen=new m)},m=function(){this.entries=[]},b=function(t,e){return v(t.entries,function(t){return t[0]===e})};m.prototype={get:function(t){var e=b(this,t);if(e)return e[1]},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=d(this.entries,function(e){return e[0]===t});return~e&&this.entries.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,s){var l=t(function(t,r){c(t,l,e),p(t,{type:e,id:g++,frozen:void 0}),null!=r&&u(r,t[s],t,n)}),v=h(e),d=function(t,e,n){var r=v(t),a=o(i(e),!0);return!0===a?y(r).set(e,n):a[r.id]=n,t};return r(l.prototype,{delete:function(t){var e=v(this);if(!a(t))return!1;var n=o(t);return!0===n?y(e).delete(t):n&&f(n,e.id)&&delete n[e.id]},has:function(t){var e=v(this);if(!a(t))return!1;var n=o(t);return!0===n?y(e).has(t):n&&f(n,e.id)}}),r(l.prototype,n?{get:function(t){var e=v(this);if(a(t)){var n=o(t);return!0===n?y(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return d(this,t,e)}}:{add:function(t){return d(this,t,!0)}}),l}}},DGHb:function(t,e,n){"use strict";var r=n("wA6s"),o=n("rG8t"),i=n("VCQ8"),a=n("LdO1");r({target:"Date",proto:!0,forced:o(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})},{toJSON:function(t){var e=i(this),n=a(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},DYg9:function(t,e,n){"use strict";var r=n("LdO1"),o=n("/Ybd"),i=n("uSMZ");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},Djps:function(t,e,n){n("wA6s")({target:"Math",stat:!0},{log1p:n("O3xq")})},DscF:function(t,e,n){var r=n("wA6s"),o=n("w4Hq"),i=n("A1Hp");r({target:"Array",proto:!0},{fill:o}),i("fill")},E7aN:function(t,e,n){t.exports=n("ocAm")},E8Ab:function(t,e,n){"use strict";var r=n("Neub"),o=n("6XUM"),i=[].slice,a={},c=function(t,e,n){if(!(e in a)){for(var r=[],o=0;o0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},EMtK:function(t,e,n){var r=n("tUdv"),o=n("hmpk");t.exports=function(t){return r(o(t))}},EQZg:function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},EntM:function(t,e,n){var r=n("wA6s"),o=n("T69T");r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperties:n("5y2d")})},"Ew/G":function(t,e,n){var r=n("E7aN"),o=n("ocAm"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},"F/TS":function(t,e,n){var r=n("mN5b"),o=n("pz+c"),i=n("m41k")("iterator");t.exports=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},F26l:function(t,e,n){var r=n("6XUM");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},FU1i:function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").map;r({target:"Array",proto:!0,forced:!n("lRyB")("map")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},"FeI/":function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").every;r({target:"Array",proto:!0,forced:n("geuh")("every")},{every:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},Fqhe:function(t,e,n){var r=n("ocAm"),o=n("HEFl");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},G1Vw:function(t,e,n){"use strict";var r,o,i,a=n("wIVT"),c=n("HEFl"),u=n("OG5q"),s=n("m41k"),f=n("g9hI"),l=s("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(r=o):p=!0),null==r&&(r={}),f||u(r,l)||c(r,l,function(){return this}),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},G7bs:function(t,e,n){var r=n("vDBE"),o=n("hmpk"),i=function(t){return function(e,n){var i,a,c=String(o(e)),u=r(n),s=c.length;return u<0||u>=s?t?"":void 0:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?t?c.charAt(u):i:t?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},HEFl:function(t,e,n){var r=n("T69T"),o=n("/Ybd"),i=n("uSMZ");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},HSQg:function(t,e,n){"use strict";var r=n("HEFl"),o=n("2MGJ"),i=n("rG8t"),a=n("m41k"),c=n("qjkP"),u=a("species"),s=!i(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}),f=!i(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});t.exports=function(t,e,n,l){var p=a(t),h=!i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)}),v=h&&!i(function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[u]=function(){return n}),n[p](""),!e});if(!h||!v||"replace"===t&&!s||"split"===t&&!f){var d=/./[p],g=n(p,""[t],function(t,e,n,r,o){return e.exec===c?h&&!o?{done:!0,value:d.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),y=g[1];o(String.prototype,t,g[0]),o(RegExp.prototype,p,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)}),l&&r(RegExp.prototype[p],"sham",!0)}}},HxcV:function(t,e,n){var r=n("rG8t"),o=n("xFZC");t.exports=function(t){return r(function(){return!!o[t]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[t]()||o[t].name!==t})}},IBH3:function(t,e,n){"use strict";var r=n("SxYf"),o=n("VCQ8"),i=n("ipMl"),a=n("5MmU"),c=n("xpLY"),u=n("DYg9"),s=n("F/TS");t.exports=function(t){var e,n,f,l,p=o(t),h="function"==typeof this?this:Array,v=arguments.length,d=v>1?arguments[1]:void 0,g=void 0!==d,y=0,m=s(p);if(g&&(d=r(d,v>2?arguments[2]:void 0,2)),null==m||h==Array&&a(m))for(n=new h(e=c(p.length));e>y;y++)u(n,y,g?d(p[y],y):p[y]);else for(l=m.call(p),n=new h;!(f=l.next()).done;y++)u(n,y,g?i(l,d,[f.value,y],!0):f.value);return n.length=y,n}},IPby:function(t,e,n){var r=n("wA6s"),o=n("EMtK"),i=n("xpLY");r({target:"String",stat:!0},{raw:function(t){for(var e=o(t.raw),n=i(e.length),r=arguments.length,a=[],c=0;n>c;)a.push(String(e[c++])),c1?arguments[1]:void 0)}})},IXlp:function(t,e,n){var r=n("wA6s"),o=n("O3xq"),i=Math.acosh,a=Math.log,c=Math.sqrt,u=Math.LN2;r({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(1/0)!=1/0},{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?a(t)+u:o(t-1+c(t-1)*c(t+1))}})},IzYO:function(t,e,n){var r=n("wA6s"),o=n("cZY6"),i=n("rG8t"),a=n("6XUM"),c=n("M7Xk").onFreeze,u=Object.freeze;r({target:"Object",stat:!0,forced:i(function(){u(1)}),sham:!o},{freeze:function(t){return u&&a(t)?u(c(t)):t}})},J4zY:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("fixed")},{fixed:function(){return o(this,"tt","","")}})},JHhb:function(t,e,n){"use strict";var r=n("Ew/G"),o=n("/Ybd"),i=n("m41k"),a=n("T69T"),c=i("species");t.exports=function(t){var e=r(t);a&&e&&!e[c]&&(0,o.f)(e,c,{configurable:!0,get:function(){return this}})}},JI1L:function(t,e,n){var r=n("6XUM");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},JafA:function(t,e,n){var r=n("6XUM"),o=n("erNl"),i=n("m41k")("species");t.exports=function(t,e){var n;return o(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},JhPs:function(t,e,n){var r=n("wA6s"),o=n("pn4C");r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},"Jt/z":function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").findIndex,i=n("A1Hp"),a=!0;"findIndex"in[]&&Array(1).findIndex(function(){a=!1}),r({target:"Array",proto:!0,forced:a},{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("findIndex")},K1Z7:function(t,e,n){"use strict";var r=n("HSQg"),o=n("F26l"),i=n("xpLY"),a=n("hmpk"),c=n("dPn5"),u=n("unYP");r("match",1,function(t,e,n){return[function(e){var n=a(this),r=null==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=o(t),s=String(this);if(!a.global)return u(a,s);var f=a.unicode;a.lastIndex=0;for(var l,p=[],h=0;null!==(l=u(a,s));){var v=String(l[0]);p[h]=v,""===v&&(a.lastIndex=c(s,i(a.lastIndex),f)),h++}return 0===h?null:p}]})},K6ZX:function(t,e,n){var r=n("6XUM"),o=n("7/lX");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},KMug:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("6XUM"),a=Object.isFrozen;r({target:"Object",stat:!0,forced:o(function(){a(1)})},{isFrozen:function(t){return!i(t)||!!a&&a(t)}})},KkqW:function(t,e,n){var r=n("vVmn"),o=n("aAjO").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},KlhL:function(t,e,n){"use strict";var r=n("T69T"),o=n("rG8t"),i=n("ZRqE"),a=n("busr"),c=n("gn9T"),u=n("VCQ8"),s=n("tUdv"),f=Object.assign;t.exports=!f||o(function(){var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach(function(t){e[t]=t}),7!=f({},t)[n]||"abcdefghijklmnopqrst"!=i(f({},e)).join("")})?function(t,e){for(var n=u(t),o=arguments.length,f=1,l=a.f,p=c.f;o>f;)for(var h,v=s(arguments[f++]),d=l?i(v).concat(l(v)):i(v),g=d.length,y=0;g>y;)h=d[y++],r&&!p.call(v,h)||(n[h]=v[h]);return n}:f},KsdI:function(t,e,n){n("94Vg")("iterator")},L4l2:function(t,e,n){"use strict";var r=n("wA6s"),o=n("s8qp"),i=n("hmpk");r({target:"String",proto:!0,forced:!n("0Ds2")("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},LdO1:function(t,e,n){var r=n("6XUM");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},M1AK:function(t,e,n){var r=n("wA6s"),o=Math.floor,i=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(t){return(t>>>=0)?31-o(i(t+.5)*a):32}})},M7Xk:function(t,e,n){var r=n("yQMY"),o=n("6XUM"),i=n("OG5q"),a=n("/Ybd").f,c=n("SDMg"),u=n("cZY6"),s=c("meta"),f=0,l=Object.isExtensible||function(){return!0},p=function(t){a(t,s,{value:{objectID:"O"+ ++f,weakData:{}}})},h=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,s)){if(!l(t))return"F";if(!e)return"E";p(t)}return t[s].objectID},getWeakData:function(t,e){if(!i(t,s)){if(!l(t))return!0;if(!e)return!1;p(t)}return t[s].weakData},onFreeze:function(t){return u&&h.REQUIRED&&l(t)&&!i(t,s)&&p(t),t}};r[s]=!0},MjoC:function(t,e,n){var r=n("T69T"),o=n("/Ybd").f,i=Function.prototype,a=i.toString,c=/^\s*function ([^ (]*)/;!r||"name"in i||o(i,"name",{configurable:!0,get:function(){try{return a.call(this).match(c)[1]}catch(t){return""}}})},MkZA:function(t,e,n){var r=n("rG8t"),o=/#|\.prototype\./,i=function(t,e){var n=c[a(t)];return n==s||n!=u&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",s=i.POLYFILL="P";t.exports=i},NIlc:function(t,e,n){var r=n("OG5q"),o=n("76gj"),i=n("7gGY"),a=n("/Ybd");t.exports=function(t,e){for(var n=o(e),c=a.f,u=i.f,s=0;s-1e-8&&t<1e-8?t-t*t/2:n(1+t)}},OG5q:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},OVXS:function(t,e,n){n("shqn")(Math,"Math",!0)},OXtp:function(t,e,n){var r=n("EMtK"),o=n("xpLY"),i=n("7Oj1"),a=function(t){return function(e,n,a){var c,u=r(e),s=o(u.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((c=u[f++])!=c)return!0}else for(;s>f;f++)if((t||f in u)&&u[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},OjQg:function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},Ox9q:function(t,e,n){var r,o,i,a=n("ocAm"),c=n("rG8t"),u=n("ezU2"),s=n("SxYf"),f=n("149L"),l=n("qx7X"),p=a.location,h=a.setImmediate,v=a.clearImmediate,d=a.process,g=a.MessageChannel,y=a.Dispatch,m=0,b={},k=function(t){if(b.hasOwnProperty(t)){var e=b[t];delete b[t],e()}},w=function(t){return function(){k(t)}},x=function(t){k(t.data)},E=function(t){a.postMessage(t+"",p.protocol+"//"+p.host)};h&&v||(h=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return b[++m]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(m),m},v=function(t){delete b[t]},"process"==u(d)?r=function(t){d.nextTick(w(t))}:y&&y.now?r=function(t){y.now(w(t))}:g?(i=(o=new g).port2,o.port1.onmessage=x,r=s(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||c(E)?r="onreadystatechange"in l("script")?function(t){f.appendChild(l("script")).onreadystatechange=function(){f.removeChild(this),k(t)}}:function(t){setTimeout(w(t),0)}:(r=E,a.addEventListener("message",x,!1))),t.exports={set:h,clear:v}},PbJR:function(t,e,n){var r=n("wA6s"),o=n("ldur");r({global:!0,forced:parseInt!=o},{parseInt:o})},Pf6x:function(t,e,n){n("wA6s")({target:"Math",stat:!0},{fround:n("48xZ")})},PmIt:function(t,e,n){"use strict";var r=n("HSQg"),o=n("1p6F"),i=n("F26l"),a=n("hmpk"),c=n("p82S"),u=n("dPn5"),s=n("xpLY"),f=n("unYP"),l=n("qjkP"),p=n("rG8t"),h=[].push,v=Math.min,d=!p(function(){return!RegExp(4294967295,"y")});r("split",2,function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=String(a(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!o(t))return e.call(r,t,i);for(var c,u,s,f=[],p=0,v=new RegExp(t.source,(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":"")+"g");(c=l.call(v,r))&&!((u=v.lastIndex)>p&&(f.push(r.slice(p,c.index)),c.length>1&&c.index=i));)v.lastIndex===c.index&&v.lastIndex++;return p===r.length?!s&&v.test("")||f.push(""):f.push(r.slice(p)),f.length>i?f.slice(0,i):f}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var o=a(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,o,n):r.call(String(o),e,n)},function(t,o){var a=n(r,t,this,o,r!==e);if(a.done)return a.value;var l=i(t),p=String(this),h=c(l,RegExp),g=l.unicode,y=new h(d?l:"^(?:"+l.source+")",(l.ignoreCase?"i":"")+(l.multiline?"m":"")+(l.unicode?"u":"")+(d?"y":"g")),m=void 0===o?4294967295:o>>>0;if(0===m)return[];if(0===p.length)return null===f(y,p)?[p]:[];for(var b=0,k=0,w=[];k1?arguments[1]:void 0)}})},QFgE:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=Math.imul;r({target:"Math",stat:!0,forced:o(function(){return-5!=i(4294967295,5)||2!=i.length})},{imul:function(t,e){var n=+t,r=+e,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},QUoj:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("anchor")},{anchor:function(t){return o(this,"a","name",t)}})},"QVG+":function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("6XUM"),a=Object.isSealed;r({target:"Object",stat:!0,forced:o(function(){a(1)})},{isSealed:function(t){return!i(t)||!!a&&a(t)}})},QcXc:function(t,e,n){var r=n("xpLY"),o=n("EMWV"),i=n("hmpk"),a=Math.ceil,c=function(t){return function(e,n,c){var u,s,f=String(i(e)),l=f.length,p=void 0===c?" ":String(c),h=r(n);return h<=l||""==p?f:((s=o.call(p,a((u=h-l)/p.length))).length>u&&(s=s.slice(0,u)),t?f+s:s+f)}};t.exports={start:c(!1),end:c(!0)}},RCvO:function(t,e,n){n("wA6s")({target:"Object",stat:!0,sham:!n("T69T")},{create:n("2RDa")})},"Rj+b":function(t,e,n){"use strict";var r=n("2MGJ"),o=n("F26l"),i=n("rG8t"),a=n("x0kV"),c=RegExp.prototype,u=c.toString;(i(function(){return"/a/b"!=u.call({source:"a",flags:"b"})})||"toString"!=u.name)&&r(RegExp.prototype,"toString",function(){var t=o(this),e=String(t.source),n=t.flags;return"/"+e+"/"+String(void 0===n&&t instanceof RegExp&&!("flags"in c)?a.call(t):n)},{unsafe:!0})},Rn6E:function(t,e,n){var r=n("F26l"),o=n("5MmU"),i=n("xpLY"),a=n("SxYf"),c=n("F/TS"),u=n("ipMl"),s=function(t,e){this.stopped=t,this.result=e};(t.exports=function(t,e,n,f,l){var p,h,v,d,g,y,m=a(e,n,f?2:1);if(l)p=t;else{if("function"!=typeof(h=c(t)))throw TypeError("Target is not iterable");if(o(h)){for(v=0,d=i(t.length);d>v;v++)if((g=f?m(r(y=t[v])[0],y[1]):m(t[v]))&&g instanceof s)return g;return new s(!1)}p=h.call(t)}for(;!(y=p.next()).done;)if((g=u(p,m,y.value,f))&&g instanceof s)return g;return new s(!1)}).stop=function(t){return new s(!0,t)}},S3Yw:function(t,e,n){"use strict";var r=n("HSQg"),o=n("F26l"),i=n("VCQ8"),a=n("xpLY"),c=n("vDBE"),u=n("hmpk"),s=n("dPn5"),f=n("unYP"),l=Math.max,p=Math.min,h=Math.floor,v=/\$([$&'`]|\d\d?|<[^>]*>)/g,d=/\$([$&'`]|\d\d?)/g;r("replace",2,function(t,e,n){return[function(n,r){var o=u(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,i){var u=n(e,t,this,i);if(u.done)return u.value;var h=o(t),v=String(this),d="function"==typeof i;d||(i=String(i));var g=h.global;if(g){var y=h.unicode;h.lastIndex=0}for(var m=[];;){var b=f(h,v);if(null===b)break;if(m.push(b),!g)break;""===String(b[0])&&(h.lastIndex=s(v,a(h.lastIndex),y))}for(var k,w="",x=0,E=0;E=x&&(w+=v.slice(x,S)+j,x=S+_.length)}return w+v.slice(x)}];function r(t,n,r,o,a,c){var u=r+t.length,s=o.length,f=d;return void 0!==a&&(a=i(a),f=v),e.call(c,f,function(e,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,r);case"'":return n.slice(u);case"<":c=a[i.slice(1,-1)];break;default:var f=+i;if(0===f)return e;if(f>s){var l=h(f/10);return 0===l?e:l<=s?void 0===o[l-1]?i.charAt(1):o[l-1]+i.charAt(1):e}c=o[f-1]}return void 0===c?"":c})}})},S58s:function(t,e,n){var r=n("wA6s"),o=n("pn4C"),i=Math.cosh,a=Math.abs,c=Math.E;r({target:"Math",stat:!0,forced:!i||i(710)===1/0},{cosh:function(t){var e=o(a(t)-1)+1;return(e+1/(e*c*c))*(c/2)}})},SC6u:function(t,e,n){"use strict";var r=n("wA6s"),o=n("qjkP");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},SDMg:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},"SM6+":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},SNUk:function(t,e,n){"use strict";var r=n("wA6s"),o=n("ocAm"),i=n("g9hI"),a=n("T69T"),c=n("U+kB"),u=n("rG8t"),s=n("OG5q"),f=n("erNl"),l=n("6XUM"),p=n("F26l"),h=n("VCQ8"),v=n("EMtK"),d=n("LdO1"),g=n("uSMZ"),y=n("2RDa"),m=n("ZRqE"),b=n("KkqW"),k=n("TzEA"),w=n("busr"),x=n("7gGY"),E=n("/Ybd"),_=n("gn9T"),S=n("HEFl"),T=n("2MGJ"),O=n("yIiL"),A=n("/AsP"),M=n("yQMY"),j=n("SDMg"),I=n("m41k"),P=n("ydtP"),D=n("94Vg"),z=n("shqn"),C=n("XH/I"),N=n("kk6e").forEach,Z=A("hidden"),R=I("toPrimitive"),F=C.set,L=C.getterFor("Symbol"),G=Object.prototype,X=o.Symbol,q=o.JSON,H=q&&q.stringify,U=x.f,V=E.f,Y=k.f,W=_.f,B=O("symbols"),Q=O("op-symbols"),K=O("string-to-symbol-registry"),J=O("symbol-to-string-registry"),$=O("wks"),tt=o.QObject,et=!tt||!tt.prototype||!tt.prototype.findChild,nt=a&&u(function(){return 7!=y(V({},"a",{get:function(){return V(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=U(G,e);r&&delete G[e],V(t,e,n),r&&t!==G&&V(G,e,r)}:V,rt=function(t,e){var n=B[t]=y(X.prototype);return F(n,{type:"Symbol",tag:t,description:e}),a||(n.description=e),n},ot=c&&"symbol"==typeof X.iterator?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof X},it=function(t,e,n){t===G&&it(Q,e,n),p(t);var r=d(e,!0);return p(n),s(B,r)?(n.enumerable?(s(t,Z)&&t[Z][r]&&(t[Z][r]=!1),n=y(n,{enumerable:g(0,!1)})):(s(t,Z)||V(t,Z,g(1,{})),t[Z][r]=!0),nt(t,r,n)):V(t,r,n)},at=function(t,e){p(t);var n=v(e),r=m(n).concat(ft(n));return N(r,function(e){a&&!ct.call(n,e)||it(t,e,n[e])}),t},ct=function(t){var e=d(t,!0),n=W.call(this,e);return!(this===G&&s(B,e)&&!s(Q,e))&&(!(n||!s(this,e)||!s(B,e)||s(this,Z)&&this[Z][e])||n)},ut=function(t,e){var n=v(t),r=d(e,!0);if(n!==G||!s(B,r)||s(Q,r)){var o=U(n,r);return!o||!s(B,r)||s(n,Z)&&n[Z][r]||(o.enumerable=!0),o}},st=function(t){var e=Y(v(t)),n=[];return N(e,function(t){s(B,t)||s(M,t)||n.push(t)}),n},ft=function(t){var e=t===G,n=Y(e?Q:v(t)),r=[];return N(n,function(t){!s(B,t)||e&&!s(G,t)||r.push(B[t])}),r};c||(T((X=function(){if(this instanceof X)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=j(t),n=function(t){this===G&&n.call(Q,t),s(this,Z)&&s(this[Z],e)&&(this[Z][e]=!1),nt(this,e,g(1,t))};return a&&et&&nt(G,e,{configurable:!0,set:n}),rt(e,t)}).prototype,"toString",function(){return L(this).tag}),_.f=ct,E.f=it,x.f=ut,b.f=k.f=st,w.f=ft,a&&(V(X.prototype,"description",{configurable:!0,get:function(){return L(this).description}}),i||T(G,"propertyIsEnumerable",ct,{unsafe:!0})),P.f=function(t){return rt(I(t),t)}),r({global:!0,wrap:!0,forced:!c,sham:!c},{Symbol:X}),N(m($),function(t){D(t)}),r({target:"Symbol",stat:!0,forced:!c},{for:function(t){var e=String(t);if(s(K,e))return K[e];var n=X(e);return K[e]=n,J[n]=e,n},keyFor:function(t){if(!ot(t))throw TypeError(t+" is not a symbol");if(s(J,t))return J[t]},useSetter:function(){et=!0},useSimple:function(){et=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!a},{create:function(t,e){return void 0===e?y(t):at(y(t),e)},defineProperty:it,defineProperties:at,getOwnPropertyDescriptor:ut}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:st,getOwnPropertySymbols:ft}),r({target:"Object",stat:!0,forced:u(function(){w.f(1)})},{getOwnPropertySymbols:function(t){return w.f(h(t))}}),q&&r({target:"JSON",stat:!0,forced:!c||u(function(){var t=X();return"[null]"!=H([t])||"{}"!=H({a:t})||"{}"!=H(Object(t))})},{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(l(e)||void 0!==t)&&!ot(t))return f(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!ot(e))return e}),r[1]=e,H.apply(q,r)}}),X.prototype[R]||S(X.prototype,R,X.prototype.valueOf),z(X,"Symbol"),M[Z]=!0},SdaC:function(t,e,n){var r=n("wA6s"),o=Math.ceil,i=Math.floor;r({target:"Math",stat:!0},{trunc:function(t){return(t>0?i:o)(t)}})},SxYf:function(t,e,n){var r=n("Neub");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},T4tC:function(t,e,n){var r=n("T69T"),o=n("ocAm"),i=n("MkZA"),a=n("K6ZX"),c=n("/Ybd").f,u=n("KkqW").f,s=n("1p6F"),f=n("x0kV"),l=n("2MGJ"),p=n("rG8t"),h=n("JHhb"),v=n("m41k")("match"),d=o.RegExp,g=d.prototype,y=/a/g,m=/a/g,b=new d(y)!==y;if(r&&i("RegExp",!b||p(function(){return m[v]=!1,d(y)!=y||d(m)==m||"/a/i"!=d(y,"i")}))){for(var k=function(t,e){var n=this instanceof k,r=s(t),o=void 0===e;return!n&&r&&t.constructor===k&&o?t:a(b?new d(r&&!o?t.source:t,e):d((r=t instanceof k)?t.source:t,r&&o?f.call(t):e),n?this:g,k)},w=function(t){t in k||c(k,t,{configurable:!0,get:function(){return d[t]},set:function(e){d[t]=e}})},x=u(d),E=0;x.length>E;)w(x[E++]);g.constructor=k,k.prototype=g,l(o,"RegExp",k)}h("RegExp")},T69T:function(t,e,n){var r=n("rG8t");t.exports=!r(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},TzEA:function(t,e,n){var r=n("EMtK"),o=n("KkqW").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(e){return a.slice()}}(t):o(r(t))}},"U+kB":function(t,e,n){var r=n("rG8t");t.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},VCQ8:function(t,e,n){var r=n("hmpk");t.exports=function(t){return Object(r(t))}},ViWx:function(t,e,n){"use strict";var r=n("wdMf"),o=n("nIH4");t.exports=r("Set",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},o)},VmbE:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("strike")},{strike:function(){return o(this,"strike","","")}})},W0ke:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("fontsize")},{fontsize:function(t){return o(this,"font","size",t)}})},WEX0:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("link")},{link:function(t){return o(this,"a","href",t)}})},WEpO:function(t,e,n){var r=n("wA6s"),o=Math.log,i=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(t){return o(t)*i}})},WKvG:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("fontcolor")},{fontcolor:function(t){return o(this,"font","color",t)}})},WLa2:function(t,e,n){var r=n("wA6s"),o=n("6XUM"),i=n("M7Xk").onFreeze,a=n("cZY6"),c=n("rG8t"),u=Object.preventExtensions;r({target:"Object",stat:!0,forced:c(function(){u(1)}),sham:!a},{preventExtensions:function(t){return u&&o(t)?u(i(t)):t}})},WijE:function(t,e,n){"use strict";var r=n("wA6s"),o=n("ZJLg"),i=n("wIVT"),a=n("7/lX"),c=n("shqn"),u=n("HEFl"),s=n("2MGJ"),f=n("m41k"),l=n("g9hI"),p=n("pz+c"),h=n("G1Vw"),v=h.IteratorPrototype,d=h.BUGGY_SAFARI_ITERATORS,g=f("iterator"),y=function(){return this};t.exports=function(t,e,n,f,h,m,b){o(n,e,f);var k,w,x,E=function(t){if(t===h&&A)return A;if(!d&&t in T)return T[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},_=e+" Iterator",S=!1,T=t.prototype,O=T[g]||T["@@iterator"]||h&&T[h],A=!d&&O||E(h),M="Array"==e&&T.entries||O;if(M&&(k=i(M.call(new t)),v!==Object.prototype&&k.next&&(l||i(k)===v||(a?a(k,v):"function"!=typeof k[g]&&u(k,g,y)),c(k,_,!0,!0),l&&(p[_]=y))),"values"==h&&O&&"values"!==O.name&&(S=!0,A=function(){return O.call(this)}),l&&!b||T[g]===A||u(T,g,A),p[e]=A,h)if(w={values:E("values"),keys:m?A:E("keys"),entries:E("entries")},b)for(x in w)!d&&!S&&x in T||s(T,x,w[x]);else r({target:e,proto:!0,forced:d||S},w);return w}},WnNu:function(t,e,n){n("wA6s")({target:"Object",stat:!0},{setPrototypeOf:n("7/lX")})},XEin:function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").some;r({target:"Array",proto:!0,forced:n("geuh")("some")},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},"XH/I":function(t,e,n){var r,o,i,a=n("yaK9"),c=n("ocAm"),u=n("6XUM"),s=n("HEFl"),f=n("OG5q"),l=n("/AsP"),p=n("yQMY");if(a){var h=new(0,c.WeakMap),v=h.get,d=h.has,g=h.set;r=function(t,e){return g.call(h,t,e),e},o=function(t){return v.call(h,t)||{}},i=function(t){return d.call(h,t)}}else{var y=l("state");p[y]=!0,r=function(t,e){return s(t,y,e),e},o=function(t){return f(t,y)?t[y]:{}},i=function(t){return f(t,y)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!u(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},XdSI:function(t,e,n){var r=n("T69T"),o=n("rG8t"),i=n("qx7X");t.exports=!r&&!o(function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a})},Xm88:function(t,e,n){var r=n("wA6s"),o=n("rCRE");r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},Y5OV:function(t,e,n){var r=n("HEFl"),o=n("CW9j"),i=n("m41k")("toPrimitive"),a=Date.prototype;i in a||r(a,i,o)},Yg8j:function(t,e,n){var r=n("ocAm").isFinite;t.exports=Number.isFinite||function(t){return"number"==typeof t&&r(t)}},Yu3F:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("bold")},{bold:function(){return o(this,"b","","")}})},ZBUp:function(t,e,n){n("wA6s")({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},ZJLg:function(t,e,n){"use strict";var r=n("G1Vw").IteratorPrototype,o=n("2RDa"),i=n("uSMZ"),a=n("shqn"),c=n("pz+c"),u=function(){return this};t.exports=function(t,e,n){var s=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,s,!1,!0),c[s]=u,t}},ZRqE:function(t,e,n){var r=n("vVmn"),o=n("aAjO");t.exports=Object.keys||function(t){return r(t,o)}},aAjO:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},aTTg:function(t,e,n){var r=n("wA6s"),o=n("pn4C"),i=Math.exp;r({target:"Math",stat:!0},{tanh:function(t){var e=o(t=+t),n=o(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},ane6:function(t,e,n){"use strict";var r=n("wA6s"),o=n("rG8t"),i=n("hH+7"),a=1..toPrecision;r({target:"Number",proto:!0,forced:o(function(){return"1"!==a.call(1,void 0)})||!o(function(){a.call({})})},{toPrecision:function(t){return void 0===t?a.call(i(this)):a.call(i(this),t)}})},azxr:function(t,e,n){"use strict";var r=n("mN5b"),o={};o[n("m41k")("toStringTag")]="z",t.exports="[object z]"!==String(o)?function(){return"[object "+r(this)+"]"}:o.toString},bHwr:function(t,e,n){"use strict";var r,o,i,a=n("wA6s"),c=n("g9hI"),u=n("ocAm"),s=n("E7aN"),f=n("8aNu"),l=n("shqn"),p=n("JHhb"),h=n("6XUM"),v=n("Neub"),d=n("SM6+"),g=n("ezU2"),y=n("Rn6E"),m=n("EIBq"),b=n("p82S"),k=n("Ox9q").set,w=n("3xQm"),x=n("7aOP"),E=n("ktmr"),_=n("oB0/"),S=n("pd8B"),T=n("4U6Q"),O=n("XH/I"),A=n("MkZA"),M=n("m41k")("species"),j=O.get,I=O.set,P=O.getterFor("Promise"),D=u.Promise,z=u.TypeError,C=u.document,N=u.process,Z=u.fetch,R=N&&N.versions,F=R&&R.v8||"",L=_.f,G=L,X="process"==g(N),q=!!(C&&C.createEvent&&u.dispatchEvent),H=A("Promise",function(){var t=D.resolve(1),e=function(){},n=(t.constructor={})[M]=function(t){t(e,e)};return!((X||"function"==typeof PromiseRejectionEvent)&&(!c||t.finally)&&t.then(e)instanceof n&&0!==F.indexOf("6.6")&&-1===T.indexOf("Chrome/66"))}),U=H||!m(function(t){D.all(t).catch(function(){})}),V=function(t){var e;return!(!h(t)||"function"!=typeof(e=t.then))&&e},Y=function(t,e,n){if(!e.notified){e.notified=!0;var r=e.reactions;w(function(){for(var o=e.value,i=1==e.state,a=0;r.length>a;){var c,u,s,f=r[a++],l=i?f.ok:f.fail,p=f.resolve,h=f.reject,v=f.domain;try{l?(i||(2===e.rejection&&K(t,e),e.rejection=1),!0===l?c=o:(v&&v.enter(),c=l(o),v&&(v.exit(),s=!0)),c===f.promise?h(z("Promise-chain cycle")):(u=V(c))?u.call(c,p,h):p(c)):h(o)}catch(d){v&&!s&&v.exit(),h(d)}}e.reactions=[],e.notified=!1,n&&!e.rejection&&B(t,e)})}},W=function(t,e,n){var r,o;q?((r=C.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},(o=u["on"+t])?o(r):"unhandledrejection"===t&&E("Unhandled promise rejection",n)},B=function(t,e){k.call(u,function(){var n,r=e.value;if(Q(e)&&(n=S(function(){X?N.emit("unhandledRejection",r,t):W("unhandledrejection",t,r)}),e.rejection=X||Q(e)?2:1,n.error))throw n.value})},Q=function(t){return 1!==t.rejection&&!t.parent},K=function(t,e){k.call(u,function(){X?N.emit("rejectionHandled",t):W("rejectionhandled",t,e.value)})},J=function(t,e,n,r){return function(o){t(e,n,o,r)}},$=function(t,e,n,r){e.done||(e.done=!0,r&&(e=r),e.value=n,e.state=2,Y(t,e,!0))},tt=function(t,e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(t===n)throw z("Promise can't be resolved itself");var o=V(n);o?w(function(){var r={done:!1};try{o.call(n,J(tt,t,r,e),J($,t,r,e))}catch(i){$(t,r,i,e)}}):(e.value=n,e.state=1,Y(t,e,!1))}catch(i){$(t,{done:!1},i,e)}}};H&&(D=function(t){d(this,D,"Promise"),v(t),r.call(this);var e=j(this);try{t(J(tt,this,e),J($,this,e))}catch(n){$(this,e,n)}},(r=function(t){I(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=f(D.prototype,{then:function(t,e){var n=P(this),r=L(b(this,D));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=X?N.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&Y(this,n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=j(t);this.promise=t,this.resolve=J(tt,t,e),this.reject=J($,t,e)},_.f=L=function(t){return t===D||t===i?new o(t):G(t)},c||"function"!=typeof Z||a({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return x(D,Z.apply(u,arguments))}})),a({global:!0,wrap:!0,forced:H},{Promise:D}),l(D,"Promise",!1,!0),p("Promise"),i=s.Promise,a({target:"Promise",stat:!0,forced:H},{reject:function(t){var e=L(this);return e.reject.call(void 0,t),e.promise}}),a({target:"Promise",stat:!0,forced:c||H},{resolve:function(t){return x(c&&this===i?D:this,t)}}),a({target:"Promise",stat:!0,forced:U},{all:function(t){var e=this,n=L(e),r=n.resolve,o=n.reject,i=S(function(){var n=v(e.resolve),i=[],a=0,c=1;y(t,function(t){var u=a++,s=!1;i.push(void 0),c++,n.call(e,t).then(function(t){s||(s=!0,i[u]=t,--c||r(i))},o)}),--c||r(i)});return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=L(e),r=n.reject,o=S(function(){var o=v(e.resolve);y(t,function(t){o.call(e,t).then(n.resolve,r)})});return o.error&&r(o.value),n.promise}})},busr:function(t,e){e.f=Object.getOwnPropertySymbols},cJLW:function(t,e,n){var r=n("wA6s"),o=n("T69T");r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:n("/Ybd").f})},cZY6:function(t,e,n){var r=n("rG8t");t.exports=!r(function(){return Object.isExtensible(Object.preventExtensions({}))})},cwa4:function(t,e,n){var r=n("rG8t");t.exports=!r(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})},dI74:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("sup")},{sup:function(){return o(this,"sup","","")}})},dPn5:function(t,e,n){"use strict";var r=n("G7bs").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"eI/9":function(t,e,n){n("T4tC"),n("Rj+b"),n("SC6u"),n("pWza"),n("K1Z7"),n("S3Yw"),n("fMvl"),n("PmIt")},erNl:function(t,e,n){var r=n("ezU2");t.exports=Array.isArray||function(t){return"Array"==r(t)}},ezU2:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},fMvl:function(t,e,n){"use strict";var r=n("HSQg"),o=n("F26l"),i=n("hmpk"),a=n("EQZg"),c=n("unYP");r("search",1,function(t,e,n){return[function(e){var n=i(this),r=null==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var i=o(t),u=String(this),s=i.lastIndex;a(s,0)||(i.lastIndex=0);var f=c(i,u);return a(i.lastIndex,s)||(i.lastIndex=s),null===f?-1:f.index}]})},g69M:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("TzEA").f;r({target:"Object",stat:!0,forced:o(function(){return!Object.getOwnPropertyNames(1)})},{getOwnPropertyNames:i})},g9hI:function(t,e){t.exports=!1},gXAK:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("big")},{big:function(){return o(this,"big","","")}})},geuh:function(t,e,n){"use strict";var r=n("rG8t");t.exports=function(t,e){var n=[][t];return!n||!r(function(){n.call(null,e||function(){throw 1},1)})}},gke3:function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").filter;r({target:"Array",proto:!0,forced:!n("lRyB")("filter")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},gn9T:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},"hH+7":function(t,e,n){var r=n("ezU2");t.exports=function(t){if("number"!=typeof t&&"Number"!=r(t))throw TypeError("Incorrect invocation");return+t}},"hN/g":function(t,e,n){"use strict";n.r(e),n("0TWp")},hdsk:function(t,e,n){"use strict";var r,o=n("ocAm"),i=n("8aNu"),a=n("M7Xk"),c=n("wdMf"),u=n("DAme"),s=n("6XUM"),f=n("XH/I").enforce,l=n("yaK9"),p=!o.ActiveXObject&&"ActiveXObject"in o,h=Object.isExtensible,v=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},d=t.exports=c("WeakMap",v,u,!0,!0);if(l&&p){r=u.getConstructor(v,"WeakMap",!0),a.REQUIRED=!0;var g=d.prototype,y=g.delete,m=g.has,b=g.get,k=g.set;i(g,{delete:function(t){if(s(t)&&!h(t)){var e=f(this);return e.frozen||(e.frozen=new r),y.call(this,t)||e.frozen.delete(t)}return y.call(this,t)},has:function(t){if(s(t)&&!h(t)){var e=f(this);return e.frozen||(e.frozen=new r),m.call(this,t)||e.frozen.has(t)}return m.call(this,t)},get:function(t){if(s(t)&&!h(t)){var e=f(this);return e.frozen||(e.frozen=new r),m.call(this,t)?b.call(this,t):e.frozen.get(t)}return b.call(this,t)},set:function(t,e){if(s(t)&&!h(t)){var n=f(this);n.frozen||(n.frozen=new r),m.call(this,t)?k.call(this,t,e):n.frozen.set(t,e)}else k.call(this,t,e);return this}})}},hmpk:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},ipMl:function(t,e,n){var r=n("F26l");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t.return;throw void 0!==i&&r(i.call(t)),a}}},jnLS:function(t,e,n){var r=n("hmpk"),o="["+n("xFZC")+"]",i=RegExp("^"+o+o+"*"),a=RegExp(o+o+"*$"),c=function(t){return function(e){var n=String(r(e));return 1&t&&(n=n.replace(i,"")),2&t&&(n=n.replace(a,"")),n}};t.exports={start:c(1),end:c(2),trim:c(3)}},kP9Y:function(t,e,n){var r=n("wA6s"),o=n("4GtL"),i=n("A1Hp");r({target:"Array",proto:!0},{copyWithin:o}),i("copyWithin")},kcGo:function(t,e,n){var r=n("wA6s"),o=n("qc/G");r({target:"Date",proto:!0,forced:Date.prototype.toISOString!==o},{toISOString:o})},kk6e:function(t,e,n){var r=n("SxYf"),o=n("tUdv"),i=n("VCQ8"),a=n("xpLY"),c=n("JafA"),u=[].push,s=function(t){var e=1==t,n=2==t,s=3==t,f=4==t,l=6==t,p=5==t||l;return function(h,v,d,g){for(var y,m,b=i(h),k=o(b),w=r(v,d,3),x=a(k.length),E=0,_=g||c,S=e?_(h,x):n?_(h,0):void 0;x>E;E++)if((p||E in k)&&(m=w(y=k[E],E,b),t))if(e)S[E]=m;else if(m)switch(t){case 3:return!0;case 5:return y;case 6:return E;case 2:u.call(S,y)}else if(f)return!1;return l?-1:s||f?f:S}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},kpca:function(t,e,n){var r=n("wA6s"),o=n("Nvxz"),i=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(t){return o(t)&&i(t)<=9007199254740991}})},ktmr:function(t,e,n){var r=n("ocAm");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},lPAZ:function(t,e,n){n("8ydS"),n("DGHb"),n("kcGo"),n("n43T"),n("Y5OV");var r=n("E7aN");t.exports=r.Date},lRyB:function(t,e,n){var r=n("rG8t"),o=n("m41k")("species");t.exports=function(t){return!r(function(){var e=[];return(e.constructor={})[o]=function(){return{foo:1}},1!==e[t](Boolean).foo})}},ldur:function(t,e,n){var r=n("ocAm"),o=n("jnLS").trim,i=n("xFZC"),a=r.parseInt,c=/^[+-]?0[Xx]/,u=8!==a(i+"08")||22!==a(i+"0x16");t.exports=u?function(t,e){var n=o(String(t));return a(n,e>>>0||(c.test(n)?16:10))}:a},m2tE:function(t,e,n){var r=n("wA6s"),o=n("IBH3");r({target:"Array",stat:!0,forced:!n("EIBq")(function(t){Array.from(t)})},{from:o})},m41k:function(t,e,n){var r=n("ocAm"),o=n("yIiL"),i=n("SDMg"),a=n("U+kB"),c=r.Symbol,u=o("wks");t.exports=function(t){return u[t]||(u[t]=a&&c[t]||(a?c:i)("Symbol."+t))}},mA9f:function(t,e,n){n("wA6s")({target:"Function",proto:!0},{bind:n("E8Ab")})},mN5b:function(t,e,n){var r=n("ezU2"),o=n("m41k")("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},mRIq:function(t,e,n){"use strict";n.r(e),n("SNUk"),n("KsdI"),n("mA9f"),n("MjoC"),n("3vMK"),n("RCvO"),n("cJLW"),n("EntM"),n("znfk"),n("A7hN"),n("wqfI"),n("g69M"),n("IzYO"),n("+5Eg"),n("WLa2"),n("KMug"),n("QVG+"),n("wVAr"),n("nuqZ"),n("u5Nv"),n("WnNu"),n("NX+v"),n("wZP2"),n("m2tE"),n("BcWx"),n("ntzx"),n("6q6p"),n("6fhQ"),n("v5if"),n("FU1i"),n("gke3"),n("XEin"),n("FeI/"),n("Q4jj"),n("IQbc"),n("6lQQ"),n("Xm88"),n("kP9Y"),n("DscF"),n("6CEi"),n("Jt/z"),n("rH3X"),n("r8F+"),n("IPby"),n("s1IR"),n("tkWj"),n("tNyX"),n("vipS"),n("L4l2"),n("BaTD"),n("oatR"),n("QUoj"),n("gXAK"),n("4axp"),n("Yu3F"),n("J4zY"),n("WKvG"),n("W0ke"),n("zTQA"),n("WEX0"),n("qpIG"),n("VmbE"),n("4Kt7"),n("dI74"),n("PbJR"),n("Ay+M"),n("qaQR"),n("tXU5"),n("lPAZ"),n("eI/9"),n("vRoz"),n("hdsk"),n("ViWx"),n("riHj"),n("bHwr")},"n/2t":function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},n1Kw:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("pn4C"),a=Math.abs,c=Math.exp,u=Math.E;r({target:"Math",stat:!0,forced:o(function(){return-2e-17!=Math.sinh(-2e-17)})},{sinh:function(t){return a(t=+t)<1?(i(t)-i(-t))/2:(c(t-1)-c(-t-1))*(u/2)}})},n43T:function(t,e,n){var r=n("2MGJ"),o=Date.prototype,i=o.toString,a=o.getTime;new Date(NaN)+""!="Invalid Date"&&r(o,"toString",function(){var t=a.call(this);return t==t?i.call(this):"Invalid Date"})},nIH4:function(t,e,n){"use strict";var r=n("/Ybd").f,o=n("2RDa"),i=n("8aNu"),a=n("SxYf"),c=n("SM6+"),u=n("Rn6E"),s=n("WijE"),f=n("JHhb"),l=n("T69T"),p=n("M7Xk").fastKey,h=n("XH/I"),v=h.set,d=h.getterFor;t.exports={getConstructor:function(t,e,n,s){var f=t(function(t,r){c(t,f,e),v(t,{type:e,index:o(null),first:void 0,last:void 0,size:0}),l||(t.size=0),null!=r&&u(r,t[s],t,n)}),h=d(e),g=function(t,e,n){var r,o,i=h(t),a=y(t,e);return a?a.value=n:(i.last=a={index:o=p(e,!0),key:e,value:n,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=a),r&&(r.next=a),l?i.size++:t.size++,"F"!==o&&(i.index[o]=a)),t},y=function(t,e){var n,r=h(t),o=p(e);if("F"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==e)return n};return i(f.prototype,{clear:function(){for(var t=h(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,l?t.size=0:this.size=0},delete:function(t){var e=h(this),n=y(this,t);if(n){var r=n.next,o=n.previous;delete e.index[n.index],n.removed=!0,o&&(o.next=r),r&&(r.previous=o),e.first==n&&(e.first=r),e.last==n&&(e.last=o),l?e.size--:this.size--}return!!n},forEach:function(t){for(var e,n=h(this),r=a(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!y(this,t)}}),i(f.prototype,n?{get:function(t){var e=y(this,t);return e&&e.value},set:function(t,e){return g(this,0===t?0:t,e)}}:{add:function(t){return g(this,t=0===t?0:t,t)}}),l&&r(f.prototype,"size",{get:function(){return h(this).size}}),f},setStrong:function(t,e,n){var r=e+" Iterator",o=d(e),i=d(r);s(t,e,function(t,e){v(this,{type:r,target:t,state:o(t),kind:e,last:void 0})},function(){for(var t=i(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})},n?"entries":"values",!n,!0),f(e)}}},nP0K:function(t,e,n){"use strict";var r=n("kk6e").forEach,o=n("geuh");t.exports=o("forEach")?function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}:[].forEach},ntzx:function(t,e,n){"use strict";var r=n("wA6s"),o=n("tUdv"),i=n("EMtK"),a=n("geuh"),c=[].join,u=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:u||s},{join:function(t){return c.call(i(this),void 0===t?",":t)}})},nuqZ:function(t,e,n){var r=n("wA6s"),o=n("KlhL");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},"oB0/":function(t,e,n){"use strict";var r=n("Neub"),o=function(t){var e,n;this.promise=new t(function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r}),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},oatR:function(t,e,n){"use strict";var r=n("wA6s"),o=n("xpLY"),i=n("s8qp"),a=n("hmpk"),c=n("0Ds2"),u="".startsWith,s=Math.min;r({target:"String",proto:!0,forced:!c("startsWith")},{startsWith:function(t){var e=String(a(this));i(t);var n=o(s(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return u?u.call(e,r,n):e.slice(n,n+r.length)===r}})},ocAm:function(t,e){var n="object",r=function(t){return t&&t.Math==Math&&t};t.exports=r(typeof globalThis==n&&globalThis)||r(typeof window==n&&window)||r(typeof self==n&&self)||r(typeof global==n&&global)||Function("return this")()},ow8b:function(t,e,n){n("wA6s")({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},p82S:function(t,e,n){var r=n("F26l"),o=n("Neub"),i=n("m41k")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},pWza:function(t,e,n){var r=n("T69T"),o=n("/Ybd"),i=n("x0kV");r&&"g"!=/./g.flags&&o.f(RegExp.prototype,"flags",{configurable:!0,get:i})},pd8B:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},pn4C:function(t,e){var n=Math.expm1,r=Math.exp;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:r(t)-1}:n},"pz+c":function(t,e){t.exports={}},qaQR:function(t,e,n){n("D+RQ"),n("ZBUp"),n("s5r0"),n("COcp"),n("+IJR"),n("kpca"),n("yI8t"),n("ow8b"),n("5eAq"),n("5zDw"),n("8xKV"),n("ane6");var r=n("E7aN");t.exports=r.Number},"qc/G":function(t,e,n){"use strict";var r=n("rG8t"),o=n("QcXc").start,i=Math.abs,a=Date.prototype,c=a.getTime,u=a.toISOString;t.exports=r(function(){return"0385-07-25T07:06:39.999Z"!=u.call(new Date(-5e13-1))})||!r(function(){u.call(new Date(NaN))})?function(){if(!isFinite(c.call(this)))throw RangeError("Invalid time value");var t=this.getUTCFullYear(),e=this.getUTCMilliseconds(),n=t<0?"-":t>9999?"+":"";return n+o(i(t),n?6:4,0)+"-"+o(this.getUTCMonth()+1,2,0)+"-"+o(this.getUTCDate(),2,0)+"T"+o(this.getUTCHours(),2,0)+":"+o(this.getUTCMinutes(),2,0)+":"+o(this.getUTCSeconds(),2,0)+"."+o(e,3,0)+"Z"}:u},qjkP:function(t,e,n){"use strict";var r,o,i=n("x0kV"),a=RegExp.prototype.exec,c=String.prototype.replace,u=a,s=(o=/b*/g,a.call(r=/a/,"a"),a.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=void 0!==/()??/.exec("")[1];(s||f)&&(u=function(t){var e,n,r,o,u=this;return f&&(n=new RegExp("^"+u.source+"$(?!\\s)",i.call(u))),s&&(e=u.lastIndex),r=a.call(u,t),s&&r&&(u.lastIndex=u.global?r.index+r[0].length:e),f&&r&&r.length>1&&c.call(r[0],n,function(){for(o=1;oa;){if(e=+arguments[a++],o(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?i(e):i(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},rCRE:function(t,e,n){"use strict";var r=n("EMtK"),o=n("vDBE"),i=n("xpLY"),a=n("geuh"),c=Math.min,u=[].lastIndexOf,s=!!u&&1/[1].lastIndexOf(1,-0)<0,f=a("lastIndexOf");t.exports=s||f?function(t){if(s)return u.apply(this,arguments)||0;var e=r(this),n=i(e.length),a=n-1;for(arguments.length>1&&(a=c(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}:u},rG8t:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},rH3X:function(t,e,n){"use strict";var r=n("EMtK"),o=n("A1Hp"),i=n("pz+c"),a=n("XH/I"),c=n("WijE"),u=a.set,s=a.getterFor("Array Iterator");t.exports=c(Array,"Array",function(t,e){u(this,{type:"Array Iterator",target:r(t),index:0,kind:e})},function(){var t=s(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}},"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},riHj:function(t,e,n){var r=n("ocAm"),o=n("OjQg"),i=n("rH3X"),a=n("HEFl"),c=n("m41k"),u=c("iterator"),s=c("toStringTag"),f=i.values;for(var l in o){var p=r[l],h=p&&p.prototype;if(h){if(h[u]!==f)try{a(h,u,f)}catch(d){h[u]=f}if(h[s]||a(h,s,l),o[l])for(var v in i)if(h[v]!==i[v])try{a(h,v,i[v])}catch(d){h[v]=i[v]}}}},s1IR:function(t,e,n){"use strict";var r=n("wA6s"),o=n("jnLS").trim;r({target:"String",proto:!0,forced:n("HxcV")("trim")},{trim:function(){return o(this)}})},s5r0:function(t,e,n){n("wA6s")({target:"Number",stat:!0},{isFinite:n("Yg8j")})},s8qp:function(t,e,n){var r=n("1p6F");t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},shqn:function(t,e,n){var r=n("/Ybd").f,o=n("OG5q"),i=n("m41k")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},tNyX:function(t,e,n){"use strict";var r=n("wA6s"),o=n("G7bs").codeAt;r({target:"String",proto:!0},{codePointAt:function(t){return o(this,t)}})},tUdv:function(t,e,n){var r=n("rG8t"),o=n("ezU2"),i="".split;t.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},tXU5:function(t,e,n){n("IXlp"),n("3caY"),n("8iOR"),n("D94X"),n("M1AK"),n("S58s"),n("JhPs"),n("Pf6x"),n("CwIO"),n("QFgE"),n("WEpO"),n("Djps"),n("6oxo"),n("BnCb"),n("n1Kw"),n("aTTg"),n("OVXS"),n("SdaC");var r=n("E7aN");t.exports=r.Math},tkWj:function(t,e,n){"use strict";var r=n("G7bs").charAt,o=n("XH/I"),i=n("WijE"),a=o.set,c=o.getterFor("String Iterator");i(String,"String",function(t){a(this,{type:"String Iterator",string:String(t),index:0})},function(){var t,e=c(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})})},u5Nv:function(t,e,n){n("wA6s")({target:"Object",stat:!0},{is:n("EQZg")})},uSMZ:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},unYP:function(t,e,n){var r=n("ezU2"),o=n("qjkP");t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},uoca:function(t,e,n){var r=n("hmpk"),o=/"/g;t.exports=function(t,e,n,i){var a=String(r(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+String(i).replace(o,""")+'"'),c+">"+a+""}},uxAC:function(t,e,n){var r=n("yIiL");t.exports=r("native-function-to-string",Function.toString)},v5if:function(t,e,n){"use strict";var r=n("wA6s"),o=n("nP0K");r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},vDBE:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},vRoz:function(t,e,n){"use strict";var r=n("wdMf"),o=n("nIH4");t.exports=r("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},o,!0)},vVmn:function(t,e,n){var r=n("OG5q"),o=n("EMtK"),i=n("OXtp").indexOf,a=n("yQMY");t.exports=function(t,e){var n,c=o(t),u=0,s=[];for(n in c)!r(a,n)&&r(c,n)&&s.push(n);for(;e.length>u;)r(c,n=e[u++])&&(~i(s,n)||s.push(n));return s}},vipS:function(t,e,n){"use strict";var r=n("wA6s"),o=n("xpLY"),i=n("s8qp"),a=n("hmpk"),c=n("0Ds2"),u="".endsWith,s=Math.min;r({target:"String",proto:!0,forced:!c("endsWith")},{endsWith:function(t){var e=String(a(this));i(t);var n=arguments.length>1?arguments[1]:void 0,r=o(e.length),c=void 0===n?r:s(o(n),r),f=String(t);return u?u.call(e,f,c):e.slice(c-f.length,c)===f}})},vyNX:function(t,e,n){var r=n("Neub"),o=n("VCQ8"),i=n("tUdv"),a=n("xpLY"),c=function(t){return function(e,n,c,u){r(n);var s=o(e),f=i(s),l=a(s.length),p=t?l-1:0,h=t?-1:1;if(c<2)for(;;){if(p in f){u=f[p],p+=h;break}if(p+=h,t?p<0:l<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:l>p;p+=h)p in f&&(u=n(u,f[p],p,s));return u}};t.exports={left:c(!1),right:c(!0)}},w4Hq:function(t,e,n){"use strict";var r=n("VCQ8"),o=n("7Oj1"),i=n("xpLY");t.exports=function(t){for(var e=r(this),n=i(e.length),a=arguments.length,c=o(a>1?arguments[1]:void 0,n),u=a>2?arguments[2]:void 0,s=void 0===u?n:o(u,n);s>c;)e[c++]=t;return e}},wA6s:function(t,e,n){var r=n("ocAm"),o=n("7gGY").f,i=n("HEFl"),a=n("2MGJ"),c=n("Fqhe"),u=n("NIlc"),s=n("MkZA");t.exports=function(t,e){var n,f,l,p,h,v=t.target,d=t.global,g=t.stat;if(n=d?r:g?r[v]||c(v,{}):(r[v]||{}).prototype)for(f in e){if(p=e[f],l=t.noTargetGet?(h=o(n,f))&&h.value:n[f],!s(d?f:v+(g?".":"#")+f,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;u(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),a(n,f,p,t)}}},wIVT:function(t,e,n){var r=n("OG5q"),o=n("VCQ8"),i=n("/AsP"),a=n("cwa4"),c=i("IE_PROTO"),u=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},wVAr:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("6XUM"),a=Object.isExtensible;r({target:"Object",stat:!0,forced:o(function(){a(1)})},{isExtensible:function(t){return!!i(t)&&(!a||a(t))}})},wZP2:function(t,e,n){n("wA6s")({target:"Array",stat:!0},{isArray:n("erNl")})},wdMf:function(t,e,n){"use strict";var r=n("wA6s"),o=n("ocAm"),i=n("MkZA"),a=n("2MGJ"),c=n("M7Xk"),u=n("Rn6E"),s=n("SM6+"),f=n("6XUM"),l=n("rG8t"),p=n("EIBq"),h=n("shqn"),v=n("K6ZX");t.exports=function(t,e,n,d,g){var y=o[t],m=y&&y.prototype,b=y,k=d?"set":"add",w={},x=function(t){var e=m[t];a(m,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(g&&!f(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!f(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!f(t))&&e.call(this,0===t?0:t)}:function(t,n){return e.call(this,0===t?0:t,n),this})};if(i(t,"function"!=typeof y||!(g||m.forEach&&!l(function(){(new y).entries().next()}))))b=n.getConstructor(e,t,d,k),c.REQUIRED=!0;else if(i(t,!0)){var E=new b,_=E[k](g?{}:-0,1)!=E,S=l(function(){E.has(1)}),T=p(function(t){new y(t)}),O=!g&&l(function(){for(var t=new y,e=5;e--;)t[k](e,e);return!t.has(-0)});T||((b=e(function(e,n){s(e,b,t);var r=v(new y,e,b);return null!=n&&u(n,r[k],r,d),r})).prototype=m,m.constructor=b),(S||O)&&(x("delete"),x("has"),d&&x("get")),(O||_)&&x(k),g&&m.clear&&delete m.clear}return w[t]=b,r({global:!0,forced:b!=y},w),h(b,t),g||n.setStrong(b,t,d),b}},wqfI:function(t,e,n){var r=n("wA6s"),o=n("VCQ8"),i=n("ZRqE");r({target:"Object",stat:!0,forced:n("rG8t")(function(){i(1)})},{keys:function(t){return i(o(t))}})},x0kV:function(t,e,n){"use strict";var r=n("F26l");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},xFZC:function(t,e){t.exports="\t\n\v\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},xpLY:function(t,e,n){var r=n("vDBE"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},xvwj:function(t,e,n){var r=n("ocAm"),o=n("jnLS").trim,i=n("xFZC"),a=r.parseFloat,c=1/a(i+"-0")!=-1/0;t.exports=c?function(t){var e=o(String(t)),n=a(e);return 0===n&&"-"==e.charAt(0)?-0:n}:a},yI8t:function(t,e,n){n("wA6s")({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},yIiL:function(t,e,n){var r=n("ocAm"),o=n("Fqhe"),i=n("g9hI"),a=r["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.1.3",mode:i?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},yQMY:function(t,e){t.exports={}},yaK9:function(t,e,n){var r=n("ocAm"),o=n("uxAC"),i=r.WeakMap;t.exports="function"==typeof i&&/native code/.test(o.call(i))},ydtP:function(t,e,n){e.f=n("m41k")},zTQA:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("9Vb/")("italics")},{italics:function(){return o(this,"i","","")}})},znfk:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("EMtK"),a=n("7gGY").f,c=n("T69T"),u=o(function(){a(1)});r({target:"Object",stat:!0,forced:!c||u,sham:!c},{getOwnPropertyDescriptor:function(t,e){return a(i(t),e)}})}},[[1,0]]]); - -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{0:function(e,n,t){e.exports=t("zUnb")},crnd:function(e,n){function t(e){return Promise.resolve().then(function(){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n})}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id="crnd"},zUnb:function(e,n,t){"use strict";t.r(n);var r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)};function o(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}var i=function(){return(i=Object.assign||function(e){for(var n,t=1,r=arguments.length;t=0;u--)(o=e[u])&&(l=(i<3?o(l):i>3?o(n,t,l):o(n,t))||l);return i>3&&l&&Object.defineProperty(n,t,l),l}function u(e,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,n)}function s(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}}function a(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,o,i=t.call(e),l=[];try{for(;(void 0===n||n-- >0)&&!(r=i.next()).done;)l.push(r.value)}catch(u){o={error:u}}finally{try{r&&!r.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return l}function c(){for(var e=[],n=0;n0?this._next(n.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},n}(U);function J(e){return e}function Y(){return function(e){return e.lift(new X(e))}}var X=function(){function e(e){this.connectable=e}return e.prototype.call=function(e,n){var t=this.connectable;t._refCount++;var r=new ee(e,t),o=n.subscribe(r);return r.closed||(r.connection=t.connect()),o},e}(),ee=function(e){function n(n,t){var r=e.call(this,n)||this;return r.connectable=t,r}return o(n,e),n.prototype._unsubscribe=function(){var e=this.connectable;if(e){this.connectable=null;var n=e._refCount;if(n<=0)this.connection=null;else if(e._refCount=n-1,n>1)this.connection=null;else{var t=this.connection,r=e._connection;this.connection=null,!r||t&&r!==t||r.unsubscribe()}}else this.connection=null},n}(E),ne=function(e){function n(n,t){var r=e.call(this)||this;return r.source=n,r.subjectFactory=t,r._refCount=0,r._isComplete=!1,r}return o(n,e),n.prototype._subscribe=function(e){return this.getSubject().subscribe(e)},n.prototype.getSubject=function(){var e=this._subject;return e&&!e.isStopped||(this._subject=this.subjectFactory()),this._subject},n.prototype.connect=function(){var e=this._connection;return e||(this._isComplete=!1,(e=this._connection=new v).add(this.source.subscribe(new re(this.getSubject(),this))),e.closed&&(this._connection=null,e=v.EMPTY)),e},n.prototype.refCount=function(){return Y()(this)},n}(T).prototype,te={operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:ne._subscribe},_isComplete:{value:ne._isComplete,writable:!0},getSubject:{value:ne.getSubject},connect:{value:ne.connect},refCount:{value:ne.refCount}},re=function(e){function n(n,t){var r=e.call(this,n)||this;return r.connectable=t,r}return o(n,e),n.prototype._error=function(n){this._unsubscribe(),e.prototype._error.call(this,n)},n.prototype._complete=function(){this.connectable._isComplete=!0,this._unsubscribe(),e.prototype._complete.call(this)},n.prototype._unsubscribe=function(){var e=this.connectable;if(e){this.connectable=null;var n=e._connection;e._refCount=0,e._subject=null,e._connection=null,n&&n.unsubscribe()}},n}(P);function oe(){return new D}var ie="__parameters__";function le(e,n,t){var r=function(e){return function(){for(var n=[],t=0;t ");else if("object"==typeof n){var i=[];for(var l in n)if(n.hasOwnProperty(l)){var u=n[l];i.push(l+":"+("string"==typeof u?JSON.stringify(u):ve(u)))}o="{"+i.join(", ")+"}"}return t+(r?"("+r+")":"")+"["+o+"]: "+e.replace(Re,"\n ")}function Fe(e,n){return new Error(ze(e,n,"StaticInjectorError"))}var Be="ngDebugContext",Ue="ngOriginalError",Ze="ngErrorLogger",Ge=function(e){return e[e.Emulated=0]="Emulated",e[e.Native=1]="Native",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",e}({}),$e=function(){return("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(Ce)}();function qe(e){return e[Be]}function We(e){return e[Ue]}function Qe(e){for(var n=[],t=1;t',!this.inertBodyElement.querySelector||this.inertBodyElement.querySelector("svg")?(this.inertBodyElement.innerHTML='

',this.getInertBodyElement=this.inertBodyElement.querySelector&&this.inertBodyElement.querySelector("svg img")&&function(){try{return!!window.DOMParser}catch(e){return!1}}()?this.getInertBodyElement_DOMParser:this.getInertBodyElement_InertDocument):this.getInertBodyElement=this.getInertBodyElement_XHR}return e.prototype.getInertBodyElement_XHR=function(e){e=""+e+"";try{e=encodeURI(e)}catch(r){return null}var n=new XMLHttpRequest;n.responseType="document",n.open("GET","data:text/html;charset=utf-8,"+e,!1),n.send(void 0);var t=n.response.body;return t.removeChild(t.firstChild),t},e.prototype.getInertBodyElement_DOMParser=function(e){e=""+e+"";try{var n=(new window.DOMParser).parseFromString(e,"text/html").body;return n.removeChild(n.firstChild),n}catch(t){return null}},e.prototype.getInertBodyElement_InertDocument=function(e){var n=this.inertDocument.createElement("template");return"content"in n?(n.innerHTML=e,n):(this.inertBodyElement.innerHTML=e,this.defaultDoc.documentMode&&this.stripCustomNsAttrs(this.inertBodyElement),this.inertBodyElement)},e.prototype.stripCustomNsAttrs=function(e){for(var n=e.attributes,t=n.length-1;0"),!0},e.prototype.endElement=function(e){var n=e.nodeName.toLowerCase();fn.hasOwnProperty(n)&&!sn.hasOwnProperty(n)&&(this.buf.push(""))},e.prototype.chars=function(e){this.buf.push(_n(e))},e.prototype.checkClobberedElement=function(e,n){if(n&&(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error("Failed to sanitize html because the element is clobbered: "+e.outerHTML);return n},e}(),mn=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,bn=/([^\#-~ |!])/g;function _n(e){return e.replace(/&/g,"&").replace(mn,function(e){return"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";"}).replace(bn,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}function wn(e){return"content"in e&&function(e){return e.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===e.nodeName}(e)?e.content:null}var Cn=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}({}),En=function(){return function(){}}(),xn=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),On=/^url\(([^)]+)\)$/,In=/([A-Z])/g;function kn(e){try{return null!=e?e.toString().slice(0,30):e}catch(n){return"[ERROR] Exception while trying to serialize the value"}}function Tn(e){return!!e&&"function"==typeof e.then}function Sn(e){return!!e&&"function"==typeof e.subscribe}var Nn=null;function An(){if(!Nn){var e=Ce.Symbol;if(e&&e.iterator)Nn=e.iterator;else for(var n=Object.getOwnPropertyNames(Map.prototype),t=0;t-1}(r)||"root"===o.providedIn&&r._def.isRoot))){var c=e._providers.length;return e._def.providers[c]=e._def.providersByKey[n.tokenKey]={flags:5120,value:u.factory,deps:[],index:c,token:n.token},e._providers[c]=gr,e._providers[c]=wr(e,e._def.providersByKey[n.tokenKey])}return 4&n.flags?t:e._parent.get(n.token,t)}finally{xe(i)}}function wr(e,n){var t;switch(201347067&n.flags){case 512:t=function(e,n,t){var r=t.length;switch(r){case 0:return new n;case 1:return new n(_r(e,t[0]));case 2:return new n(_r(e,t[0]),_r(e,t[1]));case 3:return new n(_r(e,t[0]),_r(e,t[1]),_r(e,t[2]));default:for(var o=new Array(r),i=0;i=t.length)&&(n=t.length-1),n<0)return null;var r=t[n];return r.viewContainerParent=null,Ir(t,n),Mt.dirtyParentQueries(r),xr(r),r}function Er(e,n,t){var r=n?Jt(n,n.def.lastRenderRootNode):e.renderElement,o=t.renderer.parentNode(r),i=t.renderer.nextSibling(r);ir(t,2,o,i,void 0)}function xr(e){ir(e,3,null,null,void 0)}function Or(e,n,t){n>=e.length?e.push(t):e.splice(n,0,t)}function Ir(e,n){n>=e.length-1?e.pop():e.splice(n,1)}var kr=new Object;function Tr(e,n,t,r,o,i){return new Sr(e,n,t,r,o,i)}var Sr=function(e){function n(n,t,r,o,i,l){var u=e.call(this)||this;return u.selector=n,u.componentType=t,u._inputs=o,u._outputs=i,u.ngContentSelectors=l,u.viewDefFactory=r,u}return o(n,e),Object.defineProperty(n.prototype,"inputs",{get:function(){var e=[],n=this._inputs;for(var t in n)e.push({propName:t,templateName:n[t]});return e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputs",{get:function(){var e=[];for(var n in this._outputs)e.push({propName:n,templateName:this._outputs[n]});return e},enumerable:!0,configurable:!0}),n.prototype.create=function(e,n,t,r){if(!r)throw new Error("ngModule should be provided");var o=or(this.viewDefFactory),i=o.nodes[0].element.componentProvider.nodeIndex,l=Mt.createRootView(e,n||[],t,o,r,kr),u=Vt(l,i).instance;return t&&l.renderer.setAttribute(At(l,0).renderElement,"ng-version",rt.full),new Nr(l,new Dr(l),u)},n}(zn),Nr=function(e){function n(n,t,r){var o=e.call(this)||this;return o._view=n,o._viewRef=t,o._component=r,o._elDef=o._view.def.nodes[0],o.hostView=t,o.changeDetectorRef=t,o.instance=r,o}return o(n,e),Object.defineProperty(n.prototype,"location",{get:function(){return new Kn(At(this._view,this._elDef.nodeIndex).renderElement)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"injector",{get:function(){return new Hr(this._view,this._elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"componentType",{get:function(){return this._component.constructor},enumerable:!0,configurable:!0}),n.prototype.destroy=function(){this._viewRef.destroy()},n.prototype.onDestroy=function(e){this._viewRef.onDestroy(e)},n}(Ln);function Ar(e,n,t){return new Vr(e,n,t)}var Vr=function(){function e(e,n,t){this._view=e,this._elDef=n,this._data=t,this._embeddedViews=[]}return Object.defineProperty(e.prototype,"element",{get:function(){return new Kn(this._data.renderElement)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"injector",{get:function(){return new Hr(this._view,this._elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"parentInjector",{get:function(){for(var e=this._view,n=this._elDef.parent;!n&&e;)n=Kt(e),e=e.parent;return e?new Hr(e,n):new Hr(this._view,null)},enumerable:!0,configurable:!0}),e.prototype.clear=function(){for(var e=this._embeddedViews.length-1;e>=0;e--){var n=Cr(this._data,e);Mt.destroyView(n)}},e.prototype.get=function(e){var n=this._embeddedViews[e];if(n){var t=new Dr(n);return t.attachToViewContainerRef(this),t}return null},Object.defineProperty(e.prototype,"length",{get:function(){return this._embeddedViews.length},enumerable:!0,configurable:!0}),e.prototype.createEmbeddedView=function(e,n,t){var r=e.createEmbeddedView(n||{});return this.insert(r,t),r},e.prototype.createComponent=function(e,n,t,r,o){var i=t||this.parentInjector;o||e instanceof $n||(o=i.get(qn));var l=e.create(i,r,void 0,o);return this.insert(l.hostView,n),l},e.prototype.insert=function(e,n){if(e.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");var t,r,o,i,l=e;return i=(t=this._data).viewContainer._embeddedViews,null==(r=n)&&(r=i.length),(o=l._view).viewContainerParent=this._view,Or(i,r,o),function(e,n){var t=Qt(n);if(t&&t!==e&&!(16&n.state)){n.state|=16;var r=t.template._projectedViews;r||(r=t.template._projectedViews=[]),r.push(n),function(e,t){if(!(4&t.flags)){n.parent.def.nodeFlags|=4,t.flags|=4;for(var r=t.parent;r;)r.childFlags|=4,r=r.parent}}(0,n.parentNodeDef)}}(t,o),Mt.dirtyParentQueries(o),Er(t,r>0?i[r-1]:null,o),l.attachToViewContainerRef(this),e},e.prototype.move=function(e,n){if(e.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");var t,r,o,i,l,u=this._embeddedViews.indexOf(e._view);return o=n,l=(i=(t=this._data).viewContainer._embeddedViews)[r=u],Ir(i,r),null==o&&(o=i.length),Or(i,o,l),Mt.dirtyParentQueries(l),xr(l),Er(t,o>0?i[o-1]:null,l),e},e.prototype.indexOf=function(e){return this._embeddedViews.indexOf(e._view)},e.prototype.remove=function(e){var n=Cr(this._data,e);n&&Mt.destroyView(n)},e.prototype.detach=function(e){var n=Cr(this._data,e);return n?new Dr(n):null},e}();function Pr(e){return new Dr(e)}var Dr=function(){function e(e){this._view=e,this._viewContainerRef=null,this._appRef=null}return Object.defineProperty(e.prototype,"rootNodes",{get:function(){return ir(this._view,0,void 0,void 0,e=[]),e;var e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"context",{get:function(){return this._view.context},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return 0!=(128&this._view.state)},enumerable:!0,configurable:!0}),e.prototype.markForCheck=function(){$t(this._view)},e.prototype.detach=function(){this._view.state&=-5},e.prototype.detectChanges=function(){var e=this._view.root.rendererFactory;e.begin&&e.begin();try{Mt.checkAndUpdateView(this._view)}finally{e.end&&e.end()}},e.prototype.checkNoChanges=function(){Mt.checkNoChangesView(this._view)},e.prototype.reattach=function(){this._view.state|=4},e.prototype.onDestroy=function(e){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(e)},e.prototype.destroy=function(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),Mt.destroyView(this._view)},e.prototype.detachFromAppRef=function(){this._appRef=null,xr(this._view),Mt.dirtyParentQueries(this._view)},e.prototype.attachToAppRef=function(e){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=e},e.prototype.attachToViewContainerRef=function(e){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=e},e}();function Mr(e,n){return new Rr(e,n)}var Rr=function(e){function n(n,t){var r=e.call(this)||this;return r._parentView=n,r._def=t,r}return o(n,e),n.prototype.createEmbeddedView=function(e){return new Dr(Mt.createEmbeddedView(this._parentView,this._def,this._def.element.template,e))},Object.defineProperty(n.prototype,"elementRef",{get:function(){return new Kn(At(this._parentView,this._def.nodeIndex).renderElement)},enumerable:!0,configurable:!0}),n}(wt);function jr(e,n){return new Hr(e,n)}var Hr=function(){function e(e,n){this.view=e,this.elDef=n}return e.prototype.get=function(e,n){return void 0===n&&(n=Ne.THROW_IF_NOT_FOUND),Mt.resolveDep(this.view,this.elDef,!!this.elDef&&0!=(33554432&this.elDef.flags),{flags:0,token:e,tokenKey:Ht(e)},n)},e}();function Lr(e,n){var t=e.def.nodes[n];if(1&t.flags){var r=At(e,t.nodeIndex);return t.element.template?r.template:r.renderElement}if(2&t.flags)return Nt(e,t.nodeIndex).renderText;if(20240&t.flags)return Vt(e,t.nodeIndex).instance;throw new Error("Illegal state: read nodeValue for node index "+n)}function zr(e){return new Fr(e.renderer)}var Fr=function(){function e(e){this.delegate=e}return e.prototype.selectRootElement=function(e){return this.delegate.selectRootElement(e)},e.prototype.createElement=function(e,n){var t=a(dr(n),2),r=this.delegate.createElement(t[1],t[0]);return e&&this.delegate.appendChild(e,r),r},e.prototype.createViewRoot=function(e){return e},e.prototype.createTemplateAnchor=function(e){var n=this.delegate.createComment("");return e&&this.delegate.appendChild(e,n),n},e.prototype.createText=function(e,n){var t=this.delegate.createText(n);return e&&this.delegate.appendChild(e,t),t},e.prototype.projectNodes=function(e,n){for(var t=0;t0,n.provider.value,n.provider.deps);if(n.outputs.length)for(var r=0;r0,r=n.provider;switch(201347067&n.flags){case 512:return lo(e,n.parent,t,r.value,r.deps);case 1024:return function(e,n,t,r,o){var i=o.length;switch(i){case 0:return r();case 1:return r(so(e,n,t,o[0]));case 2:return r(so(e,n,t,o[0]),so(e,n,t,o[1]));case 3:return r(so(e,n,t,o[0]),so(e,n,t,o[1]),so(e,n,t,o[2]));default:for(var l=Array(i),u=0;u0&&(o=setTimeout(function(){r._callbacks=r._callbacks.filter(function(e){return e.timeoutId!==o}),e(r._didWork,r.getPendingTasks())},n)),this._callbacks.push({doneCb:e,timeoutId:o,updateCb:t})},e.prototype.whenStable=function(e,n,t){if(t&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(e,n,t),this._runCallbacksIfReady()},e.prototype.getPendingRequestCount=function(){return this._pendingCount},e.prototype.findProviders=function(e,n,t){return[]},e}(),Yo=function(){function e(){this._applications=new Map,Xo.addToWindow(this)}return e.prototype.registerApplication=function(e,n){this._applications.set(e,n)},e.prototype.unregisterApplication=function(e){this._applications.delete(e)},e.prototype.unregisterAllApplications=function(){this._applications.clear()},e.prototype.getTestability=function(e){return this._applications.get(e)||null},e.prototype.getAllTestabilities=function(){return Array.from(this._applications.values())},e.prototype.getAllRootElements=function(){return Array.from(this._applications.keys())},e.prototype.findTestabilityInTree=function(e,n){return void 0===n&&(n=!0),Xo.findTestabilityInTree(this,e,n)},l([u("design:paramtypes",[])],e)}(),Xo=new(function(){function e(){}return e.prototype.addToWindow=function(e){},e.prototype.findTestabilityInTree=function(e,n,t){return null},e}()),ei=new Oe("AllowMultipleToken"),ni=function(){return function(e,n){this.name=e,this.token=n}}();function ti(e,n,t){void 0===t&&(t=[]);var r="Platform: "+n,o=new Oe(r);return function(n){void 0===n&&(n=[]);var i=ri();if(!i||i.injector.get(ei,!1))if(e)e(t.concat(n).concat({provide:o,useValue:!0}));else{var l=t.concat(n).concat({provide:o,useValue:!0});!function(e){if(Qo&&!Qo.destroyed&&!Qo.injector.get(ei,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");Qo=e.get(oi);var n=e.get(Eo,null);n&&n.forEach(function(e){return e()})}(Ne.create({providers:l,name:r}))}return function(e){var n=ri();if(!n)throw new Error("No platform exists!");if(!n.injector.get(e,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return n}(o)}}function ri(){return Qo&&!Qo.destroyed?Qo:null}var oi=function(){function e(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}return e.prototype.bootstrapModuleFactory=function(e,n){var t,r=this,o="noop"===(t=n?n.ngZone:void 0)?new Ko:("zone.js"===t?void 0:t)||new Uo({enableLongStackTrace:Xe()}),i=[{provide:Uo,useValue:o}];return o.run(function(){var n=Ne.create({providers:i,parent:r.injector,name:e.moduleType.name}),t=e.create(n),l=t.injector.get(Ke,null);if(!l)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return t.onDestroy(function(){return ui(r._modules,t)}),o.runOutsideAngular(function(){return o.onError.subscribe({next:function(e){l.handleError(e)}})}),function(e,n,o){try{var i=((l=t.injector.get(bo)).runInitializers(),l.donePromise.then(function(){return r._moduleDoBootstrap(t),t}));return Tn(i)?i.catch(function(t){throw n.runOutsideAngular(function(){return e.handleError(t)}),t}):i}catch(u){throw n.runOutsideAngular(function(){return e.handleError(u)}),u}var l}(l,o)})},e.prototype.bootstrapModule=function(e,n){var t=this;void 0===n&&(n=[]);var r=ii({},n);return function(e,n,t){return e.get(Mo).createCompiler([n]).compileModuleAsync(t)}(this.injector,r,e).then(function(e){return t.bootstrapModuleFactory(e,r)})},e.prototype._moduleDoBootstrap=function(e){var n=e.injector.get(li);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(function(e){return n.bootstrap(e)});else{if(!e.instance.ngDoBootstrap)throw new Error("The module "+ve(e.instance.constructor)+' was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.');e.instance.ngDoBootstrap(n)}this._modules.push(e)},e.prototype.onDestroy=function(e){this._destroyListeners.push(e)},Object.defineProperty(e.prototype,"injector",{get:function(){return this._injector},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(function(e){return e.destroy()}),this._destroyListeners.forEach(function(e){return e()}),this._destroyed=!0},Object.defineProperty(e.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!0,configurable:!0}),e}();function ii(e,n){return Array.isArray(n)?n.reduce(ii,e):i({},e,n)}var li=function(){function e(e,n,t,r,o,i){var l=this;this._zone=e,this._console=n,this._injector=t,this._exceptionHandler=r,this._componentFactoryResolver=o,this._initStatus=i,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=Xe(),this._zone.onMicrotaskEmpty.subscribe({next:function(){l._zone.run(function(){l.tick()})}});var u=new T(function(e){l._stable=l._zone.isStable&&!l._zone.hasPendingMacrotasks&&!l._zone.hasPendingMicrotasks,l._zone.runOutsideAngular(function(){e.next(l._stable),e.complete()})}),s=new T(function(e){var n;l._zone.runOutsideAngular(function(){n=l._zone.onStable.subscribe(function(){Uo.assertNotInAngularZone(),Bo(function(){l._stable||l._zone.hasPendingMacrotasks||l._zone.hasPendingMicrotasks||(l._stable=!0,e.next(!0))})})});var t=l._zone.onUnstable.subscribe(function(){Uo.assertInAngularZone(),l._stable&&(l._stable=!1,l._zone.runOutsideAngular(function(){e.next(!1)}))});return function(){n.unsubscribe(),t.unsubscribe()}});this.isStable=function(){for(var e=[],n=0;n1&&"number"==typeof e[e.length-1]&&(r=e.pop())):"number"==typeof i&&(r=e.pop()),null===o&&1===e.length&&e[0]instanceof T?e[0]:function(e){return void 0===e&&(e=Number.POSITIVE_INFINITY),function e(n,t,r){return void 0===r&&(r=Number.POSITIVE_INFINITY),"function"==typeof t?function(o){return o.pipe(e(function(e,r){return W(n(e,r)).pipe(Z(function(n,o){return t(e,n,r,o)}))},r))}:("number"==typeof t&&(r=t),function(e){return e.lift(new Q(n,r))})}(J,e)}(r)(function(e,n){return n?q(e,n):new T(j(e))}(e,o))}(u,s.pipe(function(e){return Y()((n=oe,function(e){var t;t="function"==typeof n?n:function(){return n};var r=Object.create(e,te);return r.source=e,r.subjectFactory=t,r})(e));var n}))}var n;return n=e,e.prototype.bootstrap=function(e,n){var t,r=this;if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");t=e instanceof zn?e:this._componentFactoryResolver.resolveComponentFactory(e),this.componentTypes.push(t.componentType);var o=t instanceof $n?null:this._injector.get(qn),i=t.create(Ne.NULL,[],n||t.selector,o);i.onDestroy(function(){r._unloadComponent(i)});var l=i.injector.get(Jo,null);return l&&i.injector.get(Yo).registerApplication(i.location.nativeElement,l),this._loadComponent(i),Xe()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),i},e.prototype.tick=function(){var e,t,r,o,i=this;if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");var l=n._tickScope();try{this._runningTick=!0;try{for(var u=s(this._views),a=u.next();!a.done;a=u.next())a.value.detectChanges()}catch(f){e={error:f}}finally{try{a&&!a.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}if(this._enforceNoNewChanges)try{for(var c=s(this._views),d=c.next();!d.done;d=c.next())d.value.checkNoChanges()}catch(p){r={error:p}}finally{try{d&&!d.done&&(o=c.return)&&o.call(c)}finally{if(r)throw r.error}}}catch(h){this._zone.runOutsideAngular(function(){return i._exceptionHandler.handleError(h)})}finally{this._runningTick=!1,zo(l)}},e.prototype.attachView=function(e){var n=e;this._views.push(n),n.attachToAppRef(this)},e.prototype.detachView=function(e){var n=e;ui(this._views,n),n.detachFromAppRef()},e.prototype._loadComponent=function(e){this.attachView(e.hostView),this.tick(),this.components.push(e),this._injector.get(Oo,[]).concat(this._bootstrapListeners).forEach(function(n){return n(e)})},e.prototype._unloadComponent=function(e){this.detachView(e.hostView),ui(this.components,e)},e.prototype.ngOnDestroy=function(){this._views.slice().forEach(function(e){return e.destroy()})},Object.defineProperty(e.prototype,"viewCount",{get:function(){return this._views.length},enumerable:!0,configurable:!0}),e._tickScope=Lo("ApplicationRef#tick()"),e}();function ui(e,n){var t=e.indexOf(n);t>-1&&e.splice(t,1)}var si=function(){return function(e,n){this.name=e,this.callback=n}}(),ai=function(){function e(e,n,t){this.listeners=[],this.parent=null,this._debugContext=t,this.nativeNode=e,n&&n instanceof ci&&n.addChild(this)}return Object.defineProperty(e.prototype,"injector",{get:function(){return this._debugContext.injector},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"componentInstance",{get:function(){return this._debugContext.component},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"context",{get:function(){return this._debugContext.context},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"references",{get:function(){return this._debugContext.references},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"providerTokens",{get:function(){return this._debugContext.providerTokens},enumerable:!0,configurable:!0}),e}(),ci=function(e){function n(n,t,r){var o=e.call(this,n,t,r)||this;return o.properties={},o.attributes={},o.classes={},o.styles={},o.childNodes=[],o.nativeElement=n,o}return o(n,e),n.prototype.addChild=function(e){e&&(this.childNodes.push(e),e.parent=this)},n.prototype.removeChild=function(e){var n=this.childNodes.indexOf(e);-1!==n&&(e.parent=null,this.childNodes.splice(n,1))},n.prototype.insertChildrenAfter=function(e,n){var t,r=this,o=this.childNodes.indexOf(e);-1!==o&&((t=this.childNodes).splice.apply(t,c([o+1,0],n)),n.forEach(function(n){n.parent&&n.parent.removeChild(n),e.parent=r}))},n.prototype.insertBefore=function(e,n){var t=this.childNodes.indexOf(e);-1===t?this.addChild(n):(n.parent&&n.parent.removeChild(n),n.parent=this,this.childNodes.splice(t,0,n))},n.prototype.query=function(e){return this.queryAll(e)[0]||null},n.prototype.queryAll=function(e){var n=[];return function e(n,t,r){n.childNodes.forEach(function(n){n instanceof ci&&(t(n)&&r.push(n),e(n,t,r))})}(this,e,n),n},n.prototype.queryAllNodes=function(e){var n=[];return function e(n,t,r){n instanceof ci&&n.childNodes.forEach(function(n){t(n)&&r.push(n),n instanceof ci&&e(n,t,r)})}(this,e,n),n},Object.defineProperty(n.prototype,"children",{get:function(){return this.childNodes.filter(function(e){return e instanceof n})},enumerable:!0,configurable:!0}),n.prototype.triggerEventHandler=function(e,n){this.listeners.forEach(function(t){t.name==e&&t.callback(n)})},n}(ai),di=new Map,fi=function(e){return di.get(e)||null};function pi(e){di.set(e.nativeNode,e)}var hi=ti(null,"core",[{provide:xo,useValue:"unknown"},{provide:oi,deps:[Ne]},{provide:Yo,deps:[]},{provide:Io,deps:[]}]),gi=new Oe("LocaleId");function vi(){return bt}function yi(){return _t}function mi(e){return e||"en-US"}function bi(e){var n=[];return e.onStable.subscribe(function(){for(;n.length;)n.pop()()}),function(e){n.push(e)}}var _i=function(){return function(e){}}();function wi(e,n,t,r,o,i){e|=1;var l=er(n);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,flags:e,checkIndex:-1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:l.matchedQueries,matchedQueryIds:l.matchedQueryIds,references:l.references,ngContentIndex:t,childCount:r,bindings:[],bindingFlags:0,outputs:[],element:{ns:null,name:null,attrs:null,template:i?or(i):null,componentProvider:null,componentView:null,componentRendererType:null,publicProviders:null,allProviders:null,handleEvent:o||Rt},provider:null,text:null,query:null,ngContent:null}}function Ci(e,n,t,r,o,i,l,u,s,c,d,f){var p;void 0===l&&(l=[]),c||(c=Rt);var h=er(t),g=h.matchedQueries,v=h.references,y=h.matchedQueryIds,m=null,b=null;i&&(m=(p=a(dr(i),2))[0],b=p[1]),u=u||[];for(var _=new Array(u.length),w=0;w0)a=g,ji(g)||(c=g);else for(;a&&h===a.nodeIndex+a.childCount;){var m=a.parent;m&&(m.childFlags|=a.childFlags,m.childMatchedQueries|=a.childMatchedQueries),c=(a=m)&&ji(a)?a.renderParent:a}}return{factory:null,nodeFlags:l,rootNodeFlags:u,nodeMatchedQueries:s,flags:e,nodes:n,updateDirectives:t||Rt,updateRenderer:r||Rt,handleEvent:function(e,t,r,o){return n[t].element.handleEvent(e,r,o)},bindingCount:o,outputCount:i,lastRenderRootNode:p}}function ji(e){return 0!=(1&e.flags)&&null===e.element.name}function Hi(e,n,t){var r=n.element&&n.element.template;if(r){if(!r.lastRenderRootNode)throw new Error("Illegal State: Embedded templates without nodes are not allowed!");if(r.lastRenderRootNode&&16777216&r.lastRenderRootNode.flags)throw new Error("Illegal State: Last root node of a template can't have embedded views, at index "+n.nodeIndex+"!")}if(20224&n.flags&&0==(1&(e?e.flags:0)))throw new Error("Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index "+n.nodeIndex+"!");if(n.query){if(67108864&n.flags&&(!e||0==(16384&e.flags)))throw new Error("Illegal State: Content Query nodes need to be children of directives, at index "+n.nodeIndex+"!");if(134217728&n.flags&&e)throw new Error("Illegal State: View Query nodes have to be top level nodes, at index "+n.nodeIndex+"!")}if(n.childCount){var o=e?e.nodeIndex+e.childCount:t-1;if(n.nodeIndex<=o&&n.nodeIndex+n.childCount>o)throw new Error("Illegal State: childCount of node leads outside of parent, at index "+n.nodeIndex+"!")}}function Li(e,n,t,r){var o=Bi(e.root,e.renderer,e,n,t);return Ui(o,e.component,r),Zi(o),o}function zi(e,n,t){var r=Bi(e,e.renderer,null,null,n);return Ui(r,t,t),Zi(r),r}function Fi(e,n,t,r){var o,i=n.element.componentRendererType;return o=i?e.root.rendererFactory.createRenderer(r,i):e.root.renderer,Bi(e.root,o,e,n.element.componentProvider,t)}function Bi(e,n,t,r,o){var i=new Array(o.nodes.length),l=o.outputCount?new Array(o.outputCount):null;return{def:o,parent:t,viewContainerParent:null,parentNodeDef:r,context:null,component:null,nodes:i,state:13,root:e,renderer:n,oldValues:new Array(o.bindingCount),disposables:l,initIndex:-1}}function Ui(e,n,t){e.component=n,e.context=t}function Zi(e){var n;Yt(e)&&(n=At(e.parent,e.parentNodeDef.parent.nodeIndex).renderElement);for(var t=e.def,r=e.nodes,o=0;o0&&Ii(e,n,0,t)&&(p=!0),f>1&&Ii(e,n,1,r)&&(p=!0),f>2&&Ii(e,n,2,o)&&(p=!0),f>3&&Ii(e,n,3,i)&&(p=!0),f>4&&Ii(e,n,4,l)&&(p=!0),f>5&&Ii(e,n,5,u)&&(p=!0),f>6&&Ii(e,n,6,s)&&(p=!0),f>7&&Ii(e,n,7,a)&&(p=!0),f>8&&Ii(e,n,8,c)&&(p=!0),f>9&&Ii(e,n,9,d)&&(p=!0),p}(e,n,t,r,o,i,l,u,s,a,c,d);case 2:return function(e,n,t,r,o,i,l,u,s,a,c,d){var f=!1,p=n.bindings,h=p.length;if(h>0&&Zt(e,n,0,t)&&(f=!0),h>1&&Zt(e,n,1,r)&&(f=!0),h>2&&Zt(e,n,2,o)&&(f=!0),h>3&&Zt(e,n,3,i)&&(f=!0),h>4&&Zt(e,n,4,l)&&(f=!0),h>5&&Zt(e,n,5,u)&&(f=!0),h>6&&Zt(e,n,6,s)&&(f=!0),h>7&&Zt(e,n,7,a)&&(f=!0),h>8&&Zt(e,n,8,c)&&(f=!0),h>9&&Zt(e,n,9,d)&&(f=!0),f){var g=n.text.prefix;h>0&&(g+=Mi(t,p[0])),h>1&&(g+=Mi(r,p[1])),h>2&&(g+=Mi(o,p[2])),h>3&&(g+=Mi(i,p[3])),h>4&&(g+=Mi(l,p[4])),h>5&&(g+=Mi(u,p[5])),h>6&&(g+=Mi(s,p[6])),h>7&&(g+=Mi(a,p[7])),h>8&&(g+=Mi(c,p[8])),h>9&&(g+=Mi(d,p[9]));var v=Nt(e,n.nodeIndex).renderText;e.renderer.setValue(v,g)}return f}(e,n,t,r,o,i,l,u,s,a,c,d);case 16384:return function(e,n,t,r,o,i,l,u,s,a,c,d){var f=Vt(e,n.nodeIndex),p=f.instance,h=!1,g=void 0,v=n.bindings.length;return v>0&&Ut(e,n,0,t)&&(h=!0,g=co(e,f,n,0,t,g)),v>1&&Ut(e,n,1,r)&&(h=!0,g=co(e,f,n,1,r,g)),v>2&&Ut(e,n,2,o)&&(h=!0,g=co(e,f,n,2,o,g)),v>3&&Ut(e,n,3,i)&&(h=!0,g=co(e,f,n,3,i,g)),v>4&&Ut(e,n,4,l)&&(h=!0,g=co(e,f,n,4,l,g)),v>5&&Ut(e,n,5,u)&&(h=!0,g=co(e,f,n,5,u,g)),v>6&&Ut(e,n,6,s)&&(h=!0,g=co(e,f,n,6,s,g)),v>7&&Ut(e,n,7,a)&&(h=!0,g=co(e,f,n,7,a,g)),v>8&&Ut(e,n,8,c)&&(h=!0,g=co(e,f,n,8,c,g)),v>9&&Ut(e,n,9,d)&&(h=!0,g=co(e,f,n,9,d,g)),g&&p.ngOnChanges(g),65536&n.flags&&St(e,256,n.nodeIndex)&&p.ngOnInit(),262144&n.flags&&p.ngDoCheck(),h}(e,n,t,r,o,i,l,u,s,a,c,d);case 32:case 64:case 128:return function(e,n,t,r,o,i,l,u,s,a,c,d){var f=n.bindings,p=!1,h=f.length;if(h>0&&Zt(e,n,0,t)&&(p=!0),h>1&&Zt(e,n,1,r)&&(p=!0),h>2&&Zt(e,n,2,o)&&(p=!0),h>3&&Zt(e,n,3,i)&&(p=!0),h>4&&Zt(e,n,4,l)&&(p=!0),h>5&&Zt(e,n,5,u)&&(p=!0),h>6&&Zt(e,n,6,s)&&(p=!0),h>7&&Zt(e,n,7,a)&&(p=!0),h>8&&Zt(e,n,8,c)&&(p=!0),h>9&&Zt(e,n,9,d)&&(p=!0),p){var g=Pt(e,n.nodeIndex),v=void 0;switch(201347067&n.flags){case 32:v=new Array(f.length),h>0&&(v[0]=t),h>1&&(v[1]=r),h>2&&(v[2]=o),h>3&&(v[3]=i),h>4&&(v[4]=l),h>5&&(v[5]=u),h>6&&(v[6]=s),h>7&&(v[7]=a),h>8&&(v[8]=c),h>9&&(v[9]=d);break;case 64:v={},h>0&&(v[f[0].name]=t),h>1&&(v[f[1].name]=r),h>2&&(v[f[2].name]=o),h>3&&(v[f[3].name]=i),h>4&&(v[f[4].name]=l),h>5&&(v[f[5].name]=u),h>6&&(v[f[6].name]=s),h>7&&(v[f[7].name]=a),h>8&&(v[f[8].name]=c),h>9&&(v[f[9].name]=d);break;case 128:var y=t;switch(h){case 1:v=y.transform(t);break;case 2:v=y.transform(r);break;case 3:v=y.transform(r,o);break;case 4:v=y.transform(r,o,i);break;case 5:v=y.transform(r,o,i,l);break;case 6:v=y.transform(r,o,i,l,u);break;case 7:v=y.transform(r,o,i,l,u,s);break;case 8:v=y.transform(r,o,i,l,u,s,a);break;case 9:v=y.transform(r,o,i,l,u,s,a,c);break;case 10:v=y.transform(r,o,i,l,u,s,a,c,d)}}g.value=v}return p}(e,n,t,r,o,i,l,u,s,a,c,d);default:throw"unreachable"}}(e,n,r,o,i,l,u,s,a,d,f,p):function(e,n,t){switch(201347067&n.flags){case 1:return function(e,n,t){for(var r=!1,o=0;o0&&Gt(e,n,0,t),f>1&&Gt(e,n,1,r),f>2&&Gt(e,n,2,o),f>3&&Gt(e,n,3,i),f>4&&Gt(e,n,4,l),f>5&&Gt(e,n,5,u),f>6&&Gt(e,n,6,s),f>7&&Gt(e,n,7,a),f>8&&Gt(e,n,8,c),f>9&&Gt(e,n,9,d)}(e,n,r,o,i,l,u,s,a,c,d,f):function(e,n,t){for(var r=0;r0){var i=new Set(e.modules);fl.forEach(function(n,r){if(i.has(he(r).providedIn)){var o={token:r,flags:n.flags|(t?4096:0),deps:nr(n.deps),value:n.value,index:e.providers.length};e.providers.push(o),e.providersByKey[Ht(r)]=o}})}}(e=e.factory(function(){return Rt})),e):e}(r))}var dl=new Map,fl=new Map,pl=new Map;function hl(e){var n;dl.set(e.token,e),"function"==typeof e.token&&(n=he(e.token))&&"function"==typeof n.providedIn&&fl.set(e.token,e)}function gl(e,n){var t=or(n.viewDefFactory),r=or(t.nodes[0].element.componentView);pl.set(e,r)}function vl(){dl.clear(),fl.clear(),pl.clear()}function yl(e){if(0===dl.size)return e;var n=function(e){for(var n=[],t=null,r=0;r=this.currentHistoricCoverage.lcq)return!1}else if("branchCoverageIncreaseOnly"===n){var r=this.branchCoverage;if(isNaN(r)||r<=this.currentHistoricCoverage.bcq)return!1}else if("branchCoverageDecreaseOnly"===n&&(r=this.branchCoverage,isNaN(r)||r>=this.currentHistoricCoverage.bcq))return!1;return!0},n.prototype.updateCurrentHistoricCoverage=function(e){if(this.currentHistoricCoverage=null,""!==e)for(var n=0;n-1&&null===t,r}return o(n,e),n.prototype.visible=function(e,n){if(""!==e&&this.name.toLowerCase().indexOf(e.toLowerCase())>-1)return!0;for(var t=0;tn&&(r[o].collapsed=e.settings.collapseStates[n]),n++,t(r[o].subElements)};t(this.codeElements)},e}(),nu=function(){return function(){}}(),tu=void 0,ru=["en",[["a","p"],["AM","PM"],tu],[["AM","PM"],tu,tu],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],tu,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],tu,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",tu,"{1} 'at' {0}",tu],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"$","US Dollar",{},function(e){var n=Math.floor(Math.abs(e)),t=e.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===t?1:5}],ou={},iu=function(e){return e[e.Zero=0]="Zero",e[e.One=1]="One",e[e.Two=2]="Two",e[e.Few=3]="Few",e[e.Many=4]="Many",e[e.Other=5]="Other",e}({}),lu=new Oe("UseV4Plurals"),uu=function(){return function(){}}(),su=function(e){function n(n,t){var r=e.call(this)||this;return r.locale=n,r.deprecatedPluralFn=t,r}return o(n,e),n.prototype.getPluralCategory=function(e,n){switch(this.deprecatedPluralFn?this.deprecatedPluralFn(n||this.locale,e):function(e){return function(e){var n=e.toLowerCase().replace(/_/g,"-"),t=ou[n];if(t)return t;var r=n.split("-")[0];if(t=ou[r])return t;if("en"===r)return ru;throw new Error('Missing locale data for the locale "'+e+'".')}(e)[18]}(n||this.locale)(e)){case iu.Zero:return"zero";case iu.One:return"one";case iu.Two:return"two";case iu.Few:return"few";case iu.Many:return"many";default:return"other"}},n}(uu),au=function(){return function(){}}(),cu=function(){function e(e,n,t,r){this._iterableDiffers=e,this._keyValueDiffers=n,this._ngEl=t,this._renderer=r,this._initialClasses=[]}return e.prototype.getValue=function(){return null},e.prototype.setClass=function(e){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof e?e.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)},e.prototype.setNgClass=function(e){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof e?e.split(/\s+/):e,this._rawClass&&(Mn(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())},e.prototype.applyChanges=function(){if(this._iterableDiffer){var e=this._iterableDiffer.diff(this._rawClass);e&&this._applyIterableChanges(e)}else if(this._keyValueDiffer){var n=this._keyValueDiffer.diff(this._rawClass);n&&this._applyKeyValueChanges(n)}},e.prototype._applyKeyValueChanges=function(e){var n=this;e.forEachAddedItem(function(e){return n._toggleClass(e.key,e.currentValue)}),e.forEachChangedItem(function(e){return n._toggleClass(e.key,e.currentValue)}),e.forEachRemovedItem(function(e){e.previousValue&&n._toggleClass(e.key,!1)})},e.prototype._applyIterableChanges=function(e){var n=this;e.forEachAddedItem(function(e){if("string"!=typeof e.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+ve(e.item));n._toggleClass(e.item,!0)}),e.forEachRemovedItem(function(e){return n._toggleClass(e.item,!1)})},e.prototype._applyClasses=function(e){var n=this;e&&(Array.isArray(e)||e instanceof Set?e.forEach(function(e){return n._toggleClass(e,!0)}):Object.keys(e).forEach(function(t){return n._toggleClass(t,!!e[t])}))},e.prototype._removeClasses=function(e){var n=this;e&&(Array.isArray(e)||e instanceof Set?e.forEach(function(e){return n._toggleClass(e,!1)}):Object.keys(e).forEach(function(e){return n._toggleClass(e,!1)}))},e.prototype._toggleClass=function(e,n){var t=this;(e=e.trim())&&e.split(/\s+/g).forEach(function(e){n?t._renderer.addClass(t._ngEl.nativeElement,e):t._renderer.removeClass(t._ngEl.nativeElement,e)})},e}(),du=function(e){function n(n){return e.call(this,n)||this}return o(n,e),Object.defineProperty(n.prototype,"klass",{set:function(e){this._delegate.setClass(e)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"ngClass",{set:function(e){this._delegate.setNgClass(e)},enumerable:!0,configurable:!0}),n.prototype.ngDoCheck=function(){this._delegate.applyChanges()},n}(function(){function e(e){this._delegate=e}return e.prototype.getValue=function(){return this._delegate.getValue()},e.ngDirectiveDef=void 0,e}()),fu=function(){function e(e,n,t,r){this.$implicit=e,this.ngForOf=n,this.index=t,this.count=r}return Object.defineProperty(e.prototype,"first",{get:function(){return 0===this.index},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"last",{get:function(){return this.index===this.count-1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"even",{get:function(){return this.index%2==0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"odd",{get:function(){return!this.even},enumerable:!0,configurable:!0}),e}(),pu=function(){function e(e,n,t){this._viewContainer=e,this._template=n,this._differs=t,this._ngForOfDirty=!0,this._differ=null}return Object.defineProperty(e.prototype,"ngForOf",{set:function(e){this._ngForOf=e,this._ngForOfDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngForTrackBy",{get:function(){return this._trackByFn},set:function(e){Xe()&&null!=e&&"function"!=typeof e&&console&&console.warn&&console.warn("trackBy must be a function, but received "+JSON.stringify(e)+". See https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html#!#change-propagation for more information."),this._trackByFn=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngForTemplate",{set:function(e){e&&(this._template=e)},enumerable:!0,configurable:!0}),e.prototype.ngDoCheck=function(){if(this._ngForOfDirty){this._ngForOfDirty=!1;var e=this._ngForOf;if(!this._differ&&e)try{this._differ=this._differs.find(e).create(this.ngForTrackBy)}catch(r){throw new Error("Cannot find a differ supporting object '"+e+"' of type '"+((n=e).name||typeof n)+"'. NgFor only supports binding to Iterables such as Arrays.")}}var n;if(this._differ){var t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}},e.prototype._applyChanges=function(e){var n=this,t=[];e.forEachOperation(function(e,r,o){if(null==e.previousIndex){var i=n._viewContainer.createEmbeddedView(n._template,new fu(null,n._ngForOf,-1,-1),o),l=new hu(e,i);t.push(l)}else null==o?n._viewContainer.remove(r):(i=n._viewContainer.get(r),n._viewContainer.move(i,o),l=new hu(e,i),t.push(l))});for(var r=0;r0},n.prototype.tagName=function(e){return e.tagName},n.prototype.attributeMap=function(e){for(var n=new Map,t=e.attributes,r=0;r0;l||(l=e[i]=[]);var s=as(n)?Zone.root:Zone.current;if(0===l.length)l.push({zone:s,handler:o});else{for(var a=!1,c=0;c-1},n}(Bu),ys=["alt","control","meta","shift"],ms={alt:function(e){return e.altKey},control:function(e){return e.ctrlKey},meta:function(e){return e.metaKey},shift:function(e){return e.shiftKey}},bs=function(e){function n(n){return e.call(this,n)||this}var t;return o(n,e),t=n,n.prototype.supports=function(e){return null!=t.parseEventName(e)},n.prototype.addEventListener=function(e,n,r){var o=t.parseEventName(n),i=t.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(function(){return Eu().onAndCancel(e,o.domEventName,i)})},n.parseEventName=function(e){var n=e.toLowerCase().split("."),r=n.shift();if(0===n.length||"keydown"!==r&&"keyup"!==r)return null;var o=t._normalizeKey(n.pop()),i="";if(ys.forEach(function(e){var t=n.indexOf(e);t>-1&&(n.splice(t,1),i+=e+".")}),i+=o,0!=n.length||0===o.length)return null;var l={};return l.domEventName=r,l.fullKey=i,l},n.getEventFullKey=function(e){var n="",t=Eu().getEventKey(e);return" "===(t=t.toLowerCase())?t="space":"."===t&&(t="dot"),ys.forEach(function(r){r!=t&&(0,ms[r])(e)&&(n+=r+".")}),n+=t},n.eventCallback=function(e,n,r){return function(o){t.getEventFullKey(o)===e&&r.runGuarded(function(){return n(o)})}},n._normalizeKey=function(e){switch(e){case"esc":return"escape";default:return e}},n}(Bu),_s=function(){return function(){}}(),ws=function(e){function n(n){var t=e.call(this)||this;return t._doc=n,t}return o(n,e),n.prototype.sanitize=function(e,n){if(null==n)return null;switch(e){case Cn.NONE:return n;case Cn.HTML:return n instanceof Es?n.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(n,"HTML"),function(e,n){var t=null;try{un=un||new en(e);var r=n?String(n):"";t=un.getInertBodyElement(r);var o=5,i=r;do{if(0===o)throw new Error("Failed to sanitize html because the input is unstable");o--,r=i,i=t.innerHTML,t=un.getInertBodyElement(r)}while(r!==i);var l=new yn,u=l.sanitizeChildren(wn(t)||t);return Xe()&&l.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),u}finally{if(t)for(var s=wn(t)||t;s.firstChild;)s.removeChild(s.firstChild)}}(this._doc,String(n)));case Cn.STYLE:return n instanceof xs?n.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(n,"Style"),function(e){if(!(e=String(e).trim()))return"";var n=e.match(On);return n&&rn(n[1])===n[1]||e.match(xn)&&function(e){for(var n=!0,t=!0,r=0;re?{max:{max:e,actual:n.value}}:null}},e.required=function(e){return Fs(e.value)?{required:!0}:null},e.requiredTrue=function(e){return!0===e.value?null:{required:!0}},e.email=function(e){return Fs(e.value)?null:Bs.test(e.value)?null:{email:!0}},e.minLength=function(e){return function(n){if(Fs(n.value))return null;var t=n.value?n.value.length:0;return te?{maxlength:{requiredLength:e,actualLength:t}}:null}},e.pattern=function(n){return n?("string"==typeof n?(r="","^"!==n.charAt(0)&&(r+="^"),r+=n,"$"!==n.charAt(n.length-1)&&(r+="$"),t=new RegExp(r)):(r=n.toString(),t=n),function(e){if(Fs(e.value))return null;var n=e.value;return t.test(n)?null:{pattern:{requiredPattern:r,actualValue:n}}}):e.nullValidator;var t,r},e.nullValidator=function(e){return null},e.compose=function(e){if(!e)return null;var n=e.filter(Zs);return 0==n.length?null:function(e){return $s(function(e,t){return n.map(function(n){return n(e)})}(e))}},e.composeAsync=function(e){if(!e)return null;var n=e.filter(Zs);return 0==n.length?null:function(e){return function(){for(var e=[],n=0;n=0;--n)if(this._accessors[n][1]===e)return void this._accessors.splice(n,1)},e.prototype.select=function(e){var n=this;this._accessors.forEach(function(t){n._isSameGroup(t,e)&&t[1]!==e&&t[1].fireUncheck(e.value)})},e.prototype._isSameGroup=function(e,n){return!!e[0].control&&e[0]._parent===n._control._parent&&e[1].name===n.name},e}(),Js=function(){function e(e,n,t,r){this._renderer=e,this._elementRef=n,this._registry=t,this._injector=r,this.onChange=function(){},this.onTouched=function(){}}return e.prototype.ngOnInit=function(){this._control=this._injector.get(Ls),this._checkName(),this._registry.add(this._control,this)},e.prototype.ngOnDestroy=function(){this._registry.remove(this)},e.prototype.writeValue=function(e){this._state=e===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)},e.prototype.registerOnChange=function(e){var n=this;this._fn=e,this.onChange=function(){e(n.value),n._registry.select(n)}},e.prototype.fireUncheck=function(e){this.writeValue(e)},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._checkName=function(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)},e.prototype._throwNameError=function(){throw new Error('\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex: \n ')},e}(),Ys=function(){function e(e,n){this._renderer=e,this._elementRef=n,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(e))},e.prototype.registerOnChange=function(e){this.onChange=function(n){e(""==n?null:parseFloat(n))}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e}(),Xs='\n

\n
\n \n
\n
\n\n In your class:\n\n this.myGroup = new FormGroup({\n person: new FormGroup({ firstName: new FormControl() })\n });',ea='\n
\n
\n \n
\n
';function na(e,n){return null==e?""+n:(n&&"object"==typeof n&&(n="Object"),(e+": "+n).slice(0,50))}var ta=function(){function e(e,n){this._renderer=e,this._elementRef=n,this._optionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){},this._compareWith=Vn}return Object.defineProperty(e.prototype,"compareWith",{set:function(e){if("function"!=typeof e)throw new Error("compareWith must be a function, but received "+JSON.stringify(e));this._compareWith=e},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){this.value=e;var n=this._getOptionId(e);null==n&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);var t=na(n,e);this._renderer.setProperty(this._elementRef.nativeElement,"value",t)},e.prototype.registerOnChange=function(e){var n=this;this.onChange=function(t){n.value=n._getOptionValue(t),e(n.value)}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._registerOption=function(){return(this._idCounter++).toString()},e.prototype._getOptionId=function(e){var n,t;try{for(var r=s(Array.from(this._optionMap.keys())),o=r.next();!o.done;o=r.next()){var i=o.value;if(this._compareWith(this._optionMap.get(i),e))return i}}catch(l){n={error:l}}finally{try{o&&!o.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}return null},e.prototype._getOptionValue=function(e){var n=function(e){return e.split(":")[0]}(e);return this._optionMap.has(n)?this._optionMap.get(n):e},e}(),ra=function(){function e(e,n,t){this._element=e,this._renderer=n,this._select=t,this._select&&(this.id=this._select._registerOption())}return Object.defineProperty(e.prototype,"ngValue",{set:function(e){null!=this._select&&(this._select._optionMap.set(this.id,e),this._setElementValue(na(this.id,e)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{set:function(e){this._setElementValue(e),this._select&&this._select.writeValue(this._select.value)},enumerable:!0,configurable:!0}),e.prototype._setElementValue=function(e){this._renderer.setProperty(this._element.nativeElement,"value",e)},e.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},e}();function oa(e,n){return null==e?""+n:("string"==typeof n&&(n="'"+n+"'"),n&&"object"==typeof n&&(n="Object"),(e+": "+n).slice(0,50))}var ia=function(){function e(e,n){this._renderer=e,this._elementRef=n,this._optionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){},this._compareWith=Vn}return Object.defineProperty(e.prototype,"compareWith",{set:function(e){if("function"!=typeof e)throw new Error("compareWith must be a function, but received "+JSON.stringify(e));this._compareWith=e},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){var n,t=this;if(this.value=e,Array.isArray(e)){var r=e.map(function(e){return t._getOptionId(e)});n=function(e,n){e._setSelected(r.indexOf(n.toString())>-1)}}else n=function(e,n){e._setSelected(!1)};this._optionMap.forEach(n)},e.prototype.registerOnChange=function(e){var n=this;this.onChange=function(t){var r=[];if(t.hasOwnProperty("selectedOptions"))for(var o=t.selectedOptions,i=0;i1?"path: '"+e.path.join(" -> ")+"'":e.path[0]?"name: '"+e.path+"'":"unspecified name attribute",new Error(n+" "+t)}function da(e){return null!=e?Us.compose(e.map(qs)):null}function fa(e){return null!=e?Us.composeAsync(e.map(Ws)):null}var pa=[Ps,Ys,Qs,ta,ia,Js];function ha(e){var n=va(e)?e.validators:e;return Array.isArray(n)?da(n):n||null}function ga(e,n){var t=va(n)?n.asyncValidators:e;return Array.isArray(t)?fa(t):t||null}function va(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}var ya=function(){function e(e,n){this.validator=e,this.asyncValidator=n,this._onCollectionChange=function(){},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}return Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valid",{get:function(){return"VALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"invalid",{get:function(){return"INVALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pending",{get:function(){return"PENDING"==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return"DISABLED"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"enabled",{get:function(){return"DISABLED"!==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dirty",{get:function(){return!this.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"untouched",{get:function(){return!this.touched},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"updateOn",{get:function(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"},enumerable:!0,configurable:!0}),e.prototype.setValidators=function(e){this.validator=ha(e)},e.prototype.setAsyncValidators=function(e){this.asyncValidator=ga(e)},e.prototype.clearValidators=function(){this.validator=null},e.prototype.clearAsyncValidators=function(){this.asyncValidator=null},e.prototype.markAsTouched=function(e){void 0===e&&(e={}),this.touched=!0,this._parent&&!e.onlySelf&&this._parent.markAsTouched(e)},e.prototype.markAllAsTouched=function(){this.markAsTouched({onlySelf:!0}),this._forEachChild(function(e){return e.markAllAsTouched()})},e.prototype.markAsUntouched=function(e){void 0===e&&(e={}),this.touched=!1,this._pendingTouched=!1,this._forEachChild(function(e){e.markAsUntouched({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)},e.prototype.markAsDirty=function(e){void 0===e&&(e={}),this.pristine=!1,this._parent&&!e.onlySelf&&this._parent.markAsDirty(e)},e.prototype.markAsPristine=function(e){void 0===e&&(e={}),this.pristine=!0,this._pendingDirty=!1,this._forEachChild(function(e){e.markAsPristine({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)},e.prototype.markAsPending=function(e){void 0===e&&(e={}),this.status="PENDING",!1!==e.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!e.onlySelf&&this._parent.markAsPending(e)},e.prototype.disable=function(e){void 0===e&&(e={});var n=this._parentMarkedDirty(e.onlySelf);this.status="DISABLED",this.errors=null,this._forEachChild(function(n){n.disable(i({},e,{onlySelf:!0}))}),this._updateValue(),!1!==e.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(i({},e,{skipPristineCheck:n})),this._onDisabledChange.forEach(function(e){return e(!0)})},e.prototype.enable=function(e){void 0===e&&(e={});var n=this._parentMarkedDirty(e.onlySelf);this.status="VALID",this._forEachChild(function(n){n.enable(i({},e,{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(i({},e,{skipPristineCheck:n})),this._onDisabledChange.forEach(function(e){return e(!1)})},e.prototype._updateAncestors=function(e){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())},e.prototype.setParent=function(e){this._parent=e},e.prototype.updateValueAndValidity=function(e){void 0===e&&(e={}),this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this.status||this._runAsyncValidator(e.emitEvent)),!1!==e.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(e)},e.prototype._updateTreeValidity=function(e){void 0===e&&(e={emitEvent:!0}),this._forEachChild(function(n){return n._updateTreeValidity(e)}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})},e.prototype._setInitialStatus=function(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"},e.prototype._runValidator=function(){return this.validator?this.validator(this):null},e.prototype._runAsyncValidator=function(e){var n=this;if(this.asyncValidator){this.status="PENDING";var t=Gs(this.asyncValidator(this));this._asyncValidationSubscription=t.subscribe(function(t){return n.setErrors(t,{emitEvent:e})})}},e.prototype._cancelExistingSubscription=function(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()},e.prototype.setErrors=function(e,n){void 0===n&&(n={}),this.errors=e,this._updateControlsErrors(!1!==n.emitEvent)},e.prototype.get=function(e){return function(e,n,t){return null==n?null:(n instanceof Array||(n=n.split(".")),n instanceof Array&&0===n.length?null:n.reduce(function(e,n){return e instanceof ba?e.controls.hasOwnProperty(n)?e.controls[n]:null:e instanceof _a&&e.at(n)||null},e))}(this,e)},e.prototype.getError=function(e,n){var t=n?this.get(n):this;return t&&t.errors?t.errors[e]:null},e.prototype.hasError=function(e,n){return!!this.getError(e,n)},Object.defineProperty(e.prototype,"root",{get:function(){for(var e=this;e._parent;)e=e._parent;return e},enumerable:!0,configurable:!0}),e.prototype._updateControlsErrors=function(e){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(e)},e.prototype._initObservables=function(){this.valueChanges=new vo,this.statusChanges=new vo},e.prototype._calculateStatus=function(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"},e.prototype._anyControlsHaveStatus=function(e){return this._anyControls(function(n){return n.status===e})},e.prototype._anyControlsDirty=function(){return this._anyControls(function(e){return e.dirty})},e.prototype._anyControlsTouched=function(){return this._anyControls(function(e){return e.touched})},e.prototype._updatePristine=function(e){void 0===e&&(e={}),this.pristine=!this._anyControlsDirty(),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)},e.prototype._updateTouched=function(e){void 0===e&&(e={}),this.touched=this._anyControlsTouched(),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)},e.prototype._isBoxedValue=function(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e},e.prototype._registerOnCollectionChange=function(e){this._onCollectionChange=e},e.prototype._setUpdateStrategy=function(e){va(e)&&null!=e.updateOn&&(this._updateOn=e.updateOn)},e.prototype._parentMarkedDirty=function(e){return!e&&this._parent&&this._parent.dirty&&!this._parent._anyControlsDirty()},e}(),ma=function(e){function n(n,t,r){void 0===n&&(n=null);var o=e.call(this,ha(t),ga(r,t))||this;return o._onChange=[],o._applyFormState(n),o._setUpdateStrategy(t),o.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),o._initObservables(),o}return o(n,e),n.prototype.setValue=function(e,n){var t=this;void 0===n&&(n={}),this.value=this._pendingValue=e,this._onChange.length&&!1!==n.emitModelToViewChange&&this._onChange.forEach(function(e){return e(t.value,!1!==n.emitViewToModelChange)}),this.updateValueAndValidity(n)},n.prototype.patchValue=function(e,n){void 0===n&&(n={}),this.setValue(e,n)},n.prototype.reset=function(e,n){void 0===e&&(e=null),void 0===n&&(n={}),this._applyFormState(e),this.markAsPristine(n),this.markAsUntouched(n),this.setValue(this.value,n),this._pendingChange=!1},n.prototype._updateValue=function(){},n.prototype._anyControls=function(e){return!1},n.prototype._allControlsDisabled=function(){return this.disabled},n.prototype.registerOnChange=function(e){this._onChange.push(e)},n.prototype._clearChangeFns=function(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=function(){}},n.prototype.registerOnDisabledChange=function(e){this._onDisabledChange.push(e)},n.prototype._forEachChild=function(e){},n.prototype._syncPendingControls=function(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))},n.prototype._applyFormState=function(e){this._isBoxedValue(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e},n}(ya),ba=function(e){function n(n,t,r){var o=e.call(this,ha(t),ga(r,t))||this;return o.controls=n,o._initObservables(),o._setUpdateStrategy(t),o._setUpControls(),o.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),o}return o(n,e),n.prototype.registerControl=function(e,n){return this.controls[e]?this.controls[e]:(this.controls[e]=n,n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange),n)},n.prototype.addControl=function(e,n){this.registerControl(e,n),this.updateValueAndValidity(),this._onCollectionChange()},n.prototype.removeControl=function(e){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],this.updateValueAndValidity(),this._onCollectionChange()},n.prototype.setControl=function(e,n){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],n&&this.registerControl(e,n),this.updateValueAndValidity(),this._onCollectionChange()},n.prototype.contains=function(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled},n.prototype.setValue=function(e,n){var t=this;void 0===n&&(n={}),this._checkAllValuesPresent(e),Object.keys(e).forEach(function(r){t._throwIfControlMissing(r),t.controls[r].setValue(e[r],{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n)},n.prototype.patchValue=function(e,n){var t=this;void 0===n&&(n={}),Object.keys(e).forEach(function(r){t.controls[r]&&t.controls[r].patchValue(e[r],{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n)},n.prototype.reset=function(e,n){void 0===e&&(e={}),void 0===n&&(n={}),this._forEachChild(function(t,r){t.reset(e[r],{onlySelf:!0,emitEvent:n.emitEvent})}),this._updatePristine(n),this._updateTouched(n),this.updateValueAndValidity(n)},n.prototype.getRawValue=function(){return this._reduceChildren({},function(e,n,t){return e[t]=n instanceof ma?n.value:n.getRawValue(),e})},n.prototype._syncPendingControls=function(){var e=this._reduceChildren(!1,function(e,n){return!!n._syncPendingControls()||e});return e&&this.updateValueAndValidity({onlySelf:!0}),e},n.prototype._throwIfControlMissing=function(e){if(!Object.keys(this.controls).length)throw new Error("\n There are no form controls registered with this group yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.controls[e])throw new Error("Cannot find form control with name: "+e+".")},n.prototype._forEachChild=function(e){var n=this;Object.keys(this.controls).forEach(function(t){return e(n.controls[t],t)})},n.prototype._setUpControls=function(){var e=this;this._forEachChild(function(n){n.setParent(e),n._registerOnCollectionChange(e._onCollectionChange)})},n.prototype._updateValue=function(){this.value=this._reduceValue()},n.prototype._anyControls=function(e){var n=this,t=!1;return this._forEachChild(function(r,o){t=t||n.contains(o)&&e(r)}),t},n.prototype._reduceValue=function(){var e=this;return this._reduceChildren({},function(n,t,r){return(t.enabled||e.disabled)&&(n[r]=t.value),n})},n.prototype._reduceChildren=function(e,n){var t=e;return this._forEachChild(function(e,r){t=n(t,e,r)}),t},n.prototype._allControlsDisabled=function(){var e,n;try{for(var t=s(Object.keys(this.controls)),r=t.next();!r.done;r=t.next())if(this.controls[r.value].enabled)return!1}catch(o){e={error:o}}finally{try{r&&!r.done&&(n=t.return)&&n.call(t)}finally{if(e)throw e.error}}return Object.keys(this.controls).length>0||this.disabled},n.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(n,t){if(void 0===e[t])throw new Error("Must supply a value for form control with name: '"+t+"'.")})},n}(ya),_a=function(e){function n(n,t,r){var o=e.call(this,ha(t),ga(r,t))||this;return o.controls=n,o._initObservables(),o._setUpdateStrategy(t),o._setUpControls(),o.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),o}return o(n,e),n.prototype.at=function(e){return this.controls[e]},n.prototype.push=function(e){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity(),this._onCollectionChange()},n.prototype.insert=function(e,n){this.controls.splice(e,0,n),this._registerControl(n),this.updateValueAndValidity()},n.prototype.removeAt=function(e){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),this.updateValueAndValidity()},n.prototype.setControl=function(e,n){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),n&&(this.controls.splice(e,0,n),this._registerControl(n)),this.updateValueAndValidity(),this._onCollectionChange()},Object.defineProperty(n.prototype,"length",{get:function(){return this.controls.length},enumerable:!0,configurable:!0}),n.prototype.setValue=function(e,n){var t=this;void 0===n&&(n={}),this._checkAllValuesPresent(e),e.forEach(function(e,r){t._throwIfControlMissing(r),t.at(r).setValue(e,{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n)},n.prototype.patchValue=function(e,n){var t=this;void 0===n&&(n={}),e.forEach(function(e,r){t.at(r)&&t.at(r).patchValue(e,{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n)},n.prototype.reset=function(e,n){void 0===e&&(e=[]),void 0===n&&(n={}),this._forEachChild(function(t,r){t.reset(e[r],{onlySelf:!0,emitEvent:n.emitEvent})}),this._updatePristine(n),this._updateTouched(n),this.updateValueAndValidity(n)},n.prototype.getRawValue=function(){return this.controls.map(function(e){return e instanceof ma?e.value:e.getRawValue()})},n.prototype.clear=function(){this.controls.length<1||(this._forEachChild(function(e){return e._registerOnCollectionChange(function(){})}),this.controls.splice(0),this.updateValueAndValidity())},n.prototype._syncPendingControls=function(){var e=this.controls.reduce(function(e,n){return!!n._syncPendingControls()||e},!1);return e&&this.updateValueAndValidity({onlySelf:!0}),e},n.prototype._throwIfControlMissing=function(e){if(!this.controls.length)throw new Error("\n There are no form controls registered with this array yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.at(e))throw new Error("Cannot find form control at index "+e)},n.prototype._forEachChild=function(e){this.controls.forEach(function(n,t){e(n,t)})},n.prototype._updateValue=function(){var e=this;this.value=this.controls.filter(function(n){return n.enabled||e.disabled}).map(function(e){return e.value})},n.prototype._anyControls=function(e){return this.controls.some(function(n){return n.enabled&&e(n)})},n.prototype._setUpControls=function(){var e=this;this._forEachChild(function(n){return e._registerControl(n)})},n.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(n,t){if(void 0===e[t])throw new Error("Must supply a value for form control at index: "+t+".")})},n.prototype._allControlsDisabled=function(){var e,n;try{for(var t=s(this.controls),r=t.next();!r.done;r=t.next())if(r.value.enabled)return!1}catch(o){e={error:o}}finally{try{r&&!r.done&&(n=t.return)&&n.call(t)}finally{if(e)throw e.error}}return this.controls.length>0||this.disabled},n.prototype._registerControl=function(e){e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)},n}(ya),wa=function(){return Promise.resolve(null)}(),Ca=function(e){function n(n,t){var r=e.call(this)||this;return r.submitted=!1,r._directives=[],r.ngSubmit=new vo,r.form=new ba({},da(n),fa(t)),r}return o(n,e),n.prototype.ngAfterViewInit=function(){this._setUpdateStrategy()},Object.defineProperty(n.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"controls",{get:function(){return this.form.controls},enumerable:!0,configurable:!0}),n.prototype.addControl=function(e){var n=this;wa.then(function(){var t=n._findContainer(e.path);e.control=t.registerControl(e.name,e.control),sa(e.control,e),e.control.updateValueAndValidity({emitEvent:!1}),n._directives.push(e)})},n.prototype.getControl=function(e){return this.form.get(e.path)},n.prototype.removeControl=function(e){var n=this;wa.then(function(){var t,r,o=n._findContainer(e.path);o&&o.removeControl(e.name),(r=(t=n._directives).indexOf(e))>-1&&t.splice(r,1)})},n.prototype.addFormGroup=function(e){var n=this;wa.then(function(){var t=n._findContainer(e.path),r=new ba({});(function(e,n){null==e&&ca(n,"Cannot find control with"),e.validator=Us.compose([e.validator,n.validator]),e.asyncValidator=Us.composeAsync([e.asyncValidator,n.asyncValidator])})(r,e),t.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})},n.prototype.removeFormGroup=function(e){var n=this;wa.then(function(){var t=n._findContainer(e.path);t&&t.removeControl(e.name)})},n.prototype.getFormGroup=function(e){return this.form.get(e.path)},n.prototype.updateModel=function(e,n){var t=this;wa.then(function(){t.form.get(e.path).setValue(n)})},n.prototype.setValue=function(e){this.control.setValue(e)},n.prototype.onSubmit=function(e){return this.submitted=!0,n=this._directives,this.form._syncPendingControls(),n.forEach(function(e){var n=e.control;"submit"===n.updateOn&&n._pendingChange&&(e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1)}),this.ngSubmit.emit(e),!1;var n},n.prototype.onReset=function(){this.resetForm()},n.prototype.resetForm=function(e){void 0===e&&(e=void 0),this.form.reset(e),this.submitted=!1},n.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)},n.prototype._findContainer=function(e){return e.pop(),e.length?this.form.get(e):this.form},n}(js),Ea=function(){function e(){}return e.modelParentException=function(){throw new Error('\n ngModel cannot be used to register form controls with a parent formGroup directive. Try using\n formGroup\'s partner directive "formControlName" instead. Example:\n\n \n
\n \n
\n\n In your class:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });\n\n Or, if you\'d like to avoid registering this form control, indicate that it\'s standalone in ngModelOptions:\n\n Example:\n\n \n
\n \n \n
\n ')},e.formGroupNameException=function(){throw new Error("\n ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n "+Xs+"\n\n Option 2: Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n "+ea)},e.missingNameException=function(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n control must be defined as \'standalone\' in ngModelOptions.\n\n Example 1: \n Example 2: ')},e.modelGroupParentException=function(){throw new Error("\n ngModelGroup cannot be used with a parent formGroup directive.\n\n Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n "+Xs+"\n\n Option 2: Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n "+ea)},e.ngFormWarning=function(){console.warn("\n It looks like you're using 'ngForm'.\n\n Support for using the 'ngForm' element selector has been deprecated in Angular v6 and will be removed\n in Angular v9.\n\n Use 'ng-form' instead.\n\n Before:\n \n\n After:\n \n ")},e}(),xa=new Oe("NgFormSelectorWarning"),Oa=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return o(n,e),n.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormGroup(this)},n.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormGroup(this)},Object.defineProperty(n.prototype,"control",{get:function(){return this.formDirective.getFormGroup(this)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"path",{get:function(){return ua(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"validator",{get:function(){return da(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"asyncValidator",{get:function(){return fa(this._asyncValidators)},enumerable:!0,configurable:!0}),n.prototype._checkParentType=function(){},n}(js),Ia=function(e){function n(n,t,r){var o=e.call(this)||this;return o._parent=n,o._validators=t,o._asyncValidators=r,o}var t;return o(n,e),t=n,n.prototype._checkParentType=function(){this._parent instanceof t||this._parent instanceof Ca||Ea.modelGroupParentException()},n}(Oa),ka=function(){return Promise.resolve(null)}(),Ta=function(e){function n(n,t,r,o){var i=e.call(this)||this;return i.control=new ma,i._registered=!1,i.update=new vo,i._parent=n,i._rawValidators=t||[],i._rawAsyncValidators=r||[],i.valueAccessor=function(e,n){if(!n)return null;Array.isArray(n)||ca(e,"Value accessor was not provided as an array for form control with");var t=void 0,r=void 0,o=void 0;return n.forEach(function(n){var i;n.constructor===Ms?t=n:(i=n,pa.some(function(e){return i.constructor===e})?(r&&ca(e,"More than one built-in value accessor matches form control with"),r=n):(o&&ca(e,"More than one custom value accessor matches form control with"),o=n))}),o||r||t||(ca(e,"No valid value accessor for form control with"),null)}(i,o),i}return o(n,e),n.prototype.ngOnChanges=function(e){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in e&&this._updateDisabled(e),function(e,n){if(!e.hasOwnProperty("model"))return!1;var t=e.model;return!!t.isFirstChange()||!Vn(n,t.currentValue)}(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)},n.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},Object.defineProperty(n.prototype,"path",{get:function(){return this._parent?ua(this.name,this._parent):[this.name]},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"validator",{get:function(){return da(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"asyncValidator",{get:function(){return fa(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),n.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},n.prototype._setUpControl=function(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0},n.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)},n.prototype._isStandalone=function(){return!this._parent||!(!this.options||!this.options.standalone)},n.prototype._setUpStandalone=function(){sa(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})},n.prototype._checkForErrors=function(){this._isStandalone()||this._checkParentType(),this._checkName()},n.prototype._checkParentType=function(){!(this._parent instanceof Ia)&&this._parent instanceof Oa?Ea.formGroupNameException():this._parent instanceof Ia||this._parent instanceof Ca||Ea.modelParentException()},n.prototype._checkName=function(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||Ea.missingNameException()},n.prototype._updateValue=function(e){var n=this;ka.then(function(){n.control.setValue(e,{emitViewToModelChange:!1})})},n.prototype._updateDisabled=function(e){var n=this,t=e.isDisabled.currentValue,r=""===t||t&&"false"!==t;ka.then(function(){r&&!n.control.disabled?n.control.disable():!r&&n.control.disabled&&n.control.enable()})},n}(Ls),Sa=function(){return function(){}}(),Na=function(){function e(){}var n;return n=e,e.withConfig=function(e){return{ngModule:n,providers:[{provide:xa,useValue:e.warnOnDeprecatedNgFormSelector}]}},e}(),Aa=Ft({encapsulation:2,styles:[],data:{}});function Va(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(3,null,["",""]))],function(e,n){e(n,1,0,n.context.$implicit),e(n,2,0,n.context.$implicit)},function(e,n){e(n,3,0,n.context.$implicit)})}function Pa(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[["value","20"]],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(-1,null,["20"]))],function(e,n){e(n,1,0,"20"),e(n,2,0,"20")},null)}function Da(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[["value","50"]],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(-1,null,["50"]))],function(e,n){e(n,1,0,"50"),e(n,2,0,"50")},null)}function Ma(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[["value","100"]],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(-1,null,["100"]))],function(e,n){e(n,1,0,"100"),e(n,2,0,"100")},null)}function Ra(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(3,null,["",""]))],function(e,n){var t=n.component;e(n,1,0,t.totalNumberOfRiskHotspots),e(n,2,0,t.totalNumberOfRiskHotspots)},function(e,n){e(n,3,0,n.component.translations.all)})}function ja(e){return Ri(0,[(e()(),Ci(0,0,null,null,17,"select",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],function(e,n,t){var r=!0,o=e.component;return"change"===n&&(r=!1!==Lr(e,1).onChange(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,1).onTouched()&&r),"ngModelChange"===n&&(r=!1!==(o.settings.numberOfRiskHotspots=t)&&r),r},null,null)),Yr(1,16384,null,0,ta,[nt,Kn],null,null),Xr(1024,null,Vs,function(e){return[e]},[ta]),Yr(3,671744,null,0,Ta,[[8,null],[8,null],[8,null],[6,Vs]],{model:[0,"model"]},{update:"ngModelChange"}),Xr(2048,null,Ls,null,[Ta]),Yr(5,16384,null,0,zs,[[4,Ls]],null,null),(e()(),Ci(6,0,null,null,3,"option",[["value","10"]],null,null,null,null,null)),Yr(7,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(8,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(-1,null,["10"])),(e()(),wi(16777216,null,null,1,null,Pa)),Yr(11,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Da)),Yr(13,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Ma)),Yr(15,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Ra)),Yr(17,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null)],function(e,n){var t=n.component;e(n,3,0,t.settings.numberOfRiskHotspots),e(n,7,0,"10"),e(n,8,0,"10"),e(n,11,0,t.totalNumberOfRiskHotspots>10),e(n,13,0,t.totalNumberOfRiskHotspots>20),e(n,15,0,t.totalNumberOfRiskHotspots>50),e(n,17,0,t.totalNumberOfRiskHotspots>100)},function(e,n){e(n,0,0,Lr(n,5).ngClassUntouched,Lr(n,5).ngClassTouched,Lr(n,5).ngClassPristine,Lr(n,5).ngClassDirty,Lr(n,5).ngClassValid,Lr(n,5).ngClassInvalid,Lr(n,5).ngClassPending)})}function Ha(e){return Ri(0,[(e()(),Ci(0,0,null,null,0,"col",[["class","column105"]],null,null,null,null,null))],null,null)}function La(e){return Ri(0,[(e()(),Ci(0,0,null,null,8,"th",[],null,null,null,null,null)),(e()(),Ci(1,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting(""+e.context.index,t)&&r),r},null,null)),(e()(),Ci(2,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(4,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(5,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(6,null,["",""])),(e()(),Ci(7,0,null,null,1,"a",[],[[8,"href",4]],null,null,null,null)),(e()(),Ci(8,0,null,null,0,"i",[["class","icon-info-circled"]],null,null,null,null,null))],function(e,n){var t=n.component,r=e(n,5,0,t.settings.sortBy===""+n.context.index&&"desc"===t.settings.sortOrder,t.settings.sortBy===""+n.context.index&&"asc"===t.settings.sortOrder,t.settings.sortBy!==""+n.context.index);e(n,4,0,"icon-down-dir",r)},function(e,n){e(n,6,0,n.context.$implicit.name),e(n,7,0,pr(1,"",n.context.$implicit.explanationUrl,""))})}function za(e){return Ri(0,[(e()(),Ci(0,0,null,null,4,"td",[["class","right"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(2,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(3,{lightred:0,lightgreen:1}),(e()(),Pi(4,null,["",""]))],function(e,n){var t=e(n,3,0,n.context.$implicit.exceeded,!n.context.$implicit.exceeded);e(n,2,0,"right",t)},function(e,n){e(n,4,0,n.context.$implicit.value)})}function Fa(e){return Ri(0,[(e()(),Ci(0,0,null,null,10,"tr",[],null,null,null,null,null)),(e()(),Ci(1,0,null,null,1,"td",[],null,null,null,null,null)),(e()(),Pi(2,null,["",""])),(e()(),Ci(3,0,null,null,2,"td",[],null,null,null,null,null)),(e()(),Ci(4,0,null,null,1,"a",[],[[8,"href",4]],null,null,null,null)),(e()(),Pi(5,null,["",""])),(e()(),Ci(6,0,null,null,2,"td",[],[[8,"title",0]],null,null,null,null)),(e()(),Ci(7,0,null,null,1,"a",[],[[8,"href",4]],null,null,null,null)),(e()(),Pi(8,null,[" "," "])),(e()(),wi(16777216,null,null,1,null,za)),Yr(10,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null)],function(e,n){e(n,10,0,n.context.$implicit.metrics)},function(e,n){e(n,2,0,n.context.$implicit.assembly),e(n,4,0,n.context.$implicit.reportPath),e(n,5,0,n.context.$implicit.class),e(n,6,0,n.context.$implicit.methodName),e(n,7,0,n.context.$implicit.reportPath+"#file"+n.context.$implicit.fileIndex+"_line"+n.context.$implicit.line),e(n,8,0,n.context.$implicit.methodShortName)})}function Ba(e){return Ri(0,[(e()(),Ci(0,0,null,null,65,"div",[],null,null,null,null,null)),(e()(),Ci(1,0,null,null,28,"div",[["class","customizebox"]],null,null,null,null,null)),(e()(),Ci(2,0,null,null,12,"div",[],null,null,null,null,null)),(e()(),Ci(3,0,null,null,11,"select",[["name","assembly"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],function(e,n,t){var r=!0,o=e.component;return"change"===n&&(r=!1!==Lr(e,4).onChange(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,4).onTouched()&&r),"ngModelChange"===n&&(r=!1!==(o.settings.assembly=t)&&r),"ngModelChange"===n&&(r=!1!==o.updateRiskHotpots()&&r),r},null,null)),Yr(4,16384,null,0,ta,[nt,Kn],null,null),Xr(1024,null,Vs,function(e){return[e]},[ta]),Yr(6,671744,null,0,Ta,[[8,null],[8,null],[8,null],[6,Vs]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),Xr(2048,null,Ls,null,[Ta]),Yr(8,16384,null,0,zs,[[4,Ls]],null,null),(e()(),Ci(9,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),Yr(10,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(11,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(12,null,["",""])),(e()(),wi(16777216,null,null,1,null,Va)),Yr(14,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(e()(),Ci(15,0,null,null,4,"div",[["class","center"]],null,null,null,null,null)),(e()(),Ci(16,0,null,null,1,"span",[],null,null,null,null,null)),(e()(),Pi(17,null,["",""])),(e()(),wi(16777216,null,null,1,null,ja)),Yr(19,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(20,0,null,null,0,"div",[["class","center"]],null,null,null,null,null)),(e()(),Ci(21,0,null,null,8,"div",[["class","right"]],null,null,null,null,null)),(e()(),Ci(22,0,null,null,1,"span",[],null,null,null,null,null)),(e()(),Pi(23,null,[""," "])),(e()(),Ci(24,0,null,null,5,"input",[["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(e,n,t){var r=!0,o=e.component;return"input"===n&&(r=!1!==Lr(e,25)._handleInput(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,25).onTouched()&&r),"compositionstart"===n&&(r=!1!==Lr(e,25)._compositionStart()&&r),"compositionend"===n&&(r=!1!==Lr(e,25)._compositionEnd(t.target.value)&&r),"ngModelChange"===n&&(r=!1!==(o.settings.filter=t)&&r),"ngModelChange"===n&&(r=!1!==o.updateRiskHotpots()&&r),r},null,null)),Yr(25,16384,null,0,Ms,[nt,Kn,[2,Ds]],null,null),Xr(1024,null,Vs,function(e){return[e]},[Ms]),Yr(27,671744,null,0,Ta,[[8,null],[8,null],[8,null],[6,Vs]],{model:[0,"model"]},{update:"ngModelChange"}),Xr(2048,null,Ls,null,[Ta]),Yr(29,16384,null,0,zs,[[4,Ls]],null,null),(e()(),Ci(30,0,null,null,35,"table",[["class","overview table-fixed stripped"]],null,null,null,null,null)),(e()(),Ci(31,0,null,null,5,"colgroup",[],null,null,null,null,null)),(e()(),Ci(32,0,null,null,0,"col",[],null,null,null,null,null)),(e()(),Ci(33,0,null,null,0,"col",[],null,null,null,null,null)),(e()(),Ci(34,0,null,null,0,"col",[],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,Ha)),Yr(36,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(e()(),Ci(37,0,null,null,24,"thead",[],null,null,null,null,null)),(e()(),Ci(38,0,null,null,23,"tr",[],null,null,null,null,null)),(e()(),Ci(39,0,null,null,6,"th",[],null,null,null,null,null)),(e()(),Ci(40,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("assembly",t)&&r),r},null,null)),(e()(),Ci(41,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(43,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(44,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(45,null,["",""])),(e()(),Ci(46,0,null,null,6,"th",[],null,null,null,null,null)),(e()(),Ci(47,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("class",t)&&r),r},null,null)),(e()(),Ci(48,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(50,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(51,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(52,null,["",""])),(e()(),Ci(53,0,null,null,6,"th",[],null,null,null,null,null)),(e()(),Ci(54,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("method",t)&&r),r},null,null)),(e()(),Ci(55,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(57,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(58,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(59,null,["",""])),(e()(),wi(16777216,null,null,1,null,La)),Yr(61,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(e()(),Ci(62,0,null,null,3,"tbody",[],null,null,null,null,null)),(e()(),wi(16777216,null,null,2,null,Fa)),Yr(64,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(n=0,t=mu,r=[],eo(-1,n|=16,null,0,t,t,r))],function(e,n){var t=n.component;e(n,6,0,"assembly",t.settings.assembly),e(n,10,0,""),e(n,11,0,""),e(n,14,0,t.assemblies),e(n,19,0,t.totalNumberOfRiskHotspots>10),e(n,27,0,t.settings.filter),e(n,36,0,t.riskHotspotMetrics);var r=e(n,44,0,"assembly"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"assembly"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"assembly"!==t.settings.sortBy);e(n,43,0,"icon-down-dir",r);var o=e(n,51,0,"class"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"class"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"class"!==t.settings.sortBy);e(n,50,0,"icon-down-dir",o);var i=e(n,58,0,"method"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"method"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"method"!==t.settings.sortBy);e(n,57,0,"icon-down-dir",i),e(n,61,0,t.riskHotspotMetrics),e(n,64,0,function(e,n,t,r){if(Dn.isWrapped(r)){r=Dn.unwrap(r);var o=e.def.nodes[64].bindingIndex+0,i=Dn.unwrap(e.oldValues[o]);e.oldValues[o]=new Dn(i)}return r}(n,0,0,Lr(n,65).transform(t.riskHotspots,0,t.settings.numberOfRiskHotspots)))},function(e,n){var t=n.component;e(n,3,0,Lr(n,8).ngClassUntouched,Lr(n,8).ngClassTouched,Lr(n,8).ngClassPristine,Lr(n,8).ngClassDirty,Lr(n,8).ngClassValid,Lr(n,8).ngClassInvalid,Lr(n,8).ngClassPending),e(n,12,0,t.translations.assembly),e(n,17,0,t.translations.top),e(n,23,0,t.translations.filter),e(n,24,0,Lr(n,29).ngClassUntouched,Lr(n,29).ngClassTouched,Lr(n,29).ngClassPristine,Lr(n,29).ngClassDirty,Lr(n,29).ngClassValid,Lr(n,29).ngClassInvalid,Lr(n,29).ngClassPending),e(n,45,0,t.translations.assembly),e(n,52,0,t.translations.class),e(n,59,0,t.translations.method)});var n,t,r}function Ua(e){return Ri(0,[(e()(),wi(16777216,null,null,1,null,Ba)),Yr(1,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null)],function(e,n){e(n,1,0,n.component.totalNumberOfRiskHotspots>0)},null)}function Za(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,"risk-hotspots",[],null,[["window","beforeunload"]],function(e,n,t){var r=!0;return"window:beforeunload"===n&&(r=!1!==Lr(e,1).onDonBeforeUnlodad()&&r),r},Ua,Aa)),Yr(1,114688,null,0,Wl,[Gl],null,null)],function(e,n){e(n,1,0)},null)}var Ga=Tr("risk-hotspots",Wl,Za,{},{},[]),$a=function(){function e(){this.grayVisible=!0,this.greenVisible=!1,this.redVisible=!1,this.greenClass="",this.redClass="",this._percentage=NaN}return Object.defineProperty(e.prototype,"percentage",{get:function(){return this._percentage},set:function(e){this._percentage=e,this.grayVisible=isNaN(e),this.greenVisible=!isNaN(e)&&Math.round(e)>0,this.redVisible=!isNaN(e)&&100-Math.round(e)>0,this.greenClass="covered"+Math.round(e),this.redClass="covered"+(100-Math.round(e))},enumerable:!0,configurable:!0}),e}(),qa=Ft({encapsulation:2,styles:[],data:{}});function Wa(e){return Ri(0,[(e()(),Ci(0,0,null,null,0,"td",[["class","gray covered100"]],null,null,null,null,null))],null,null)}function Qa(e){return Ri(0,[(e()(),Ci(0,0,null,null,0,"td",[],[[8,"className",0]],null,null,null,null))],null,function(e,n){e(n,0,0,pr(1,"green ",n.component.greenClass,""))})}function Ka(e){return Ri(0,[(e()(),Ci(0,0,null,null,0,"td",[],[[8,"className",0]],null,null,null,null))],null,function(e,n){e(n,0,0,pr(1,"red ",n.component.redClass,""))})}function Ja(e){return Ri(2,[(e()(),Ci(0,0,null,null,6,"table",[["class","coverage"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,Wa)),Yr(2,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Qa)),Yr(4,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Ka)),Yr(6,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null)],function(e,n){var t=n.component;e(n,2,0,t.grayVisible),e(n,4,0,t.greenVisible),e(n,6,0,t.redVisible)},null)}var Ya=function(){return function(){this.element=null,this.collapsed=!1,this.branchCoverageAvailable=!1}}(),Xa=Ft({encapsulation:2,styles:[],data:{}});function ec(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,"th",[["class","right"]],null,null,null,null,null)),(e()(),Pi(1,null,["",""]))],null,function(e,n){e(n,1,0,n.component.element.branchCoveragePercentage)})}function nc(e){return Ri(0,[(e()(),Ci(0,0,null,null,2,"th",[["class","right"]],null,null,null,null,null)),(e()(),Ci(1,0,null,null,1,"coverage-bar",[],null,null,null,Ja,qa)),Yr(2,49152,null,0,$a,[],{percentage:[0,"percentage"]},null)],function(e,n){e(n,2,0,n.component.element.branchCoverage)},null)}function tc(e){return Ri(2,[(e()(),Ci(0,0,null,null,6,"th",[],null,null,null,null,null)),(e()(),Ci(1,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.element.toggleCollapse(t)&&r),r},null,null)),(e()(),Ci(2,0,null,null,3,"i",[],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(4,278528,null,0,du,[au],{ngClass:[0,"ngClass"]},null),Vi(5,{"icon-plus":0,"icon-minus":1}),(e()(),Pi(6,null,[" ",""])),(e()(),Ci(7,0,null,null,1,"th",[["class","right"]],null,null,null,null,null)),(e()(),Pi(8,null,["",""])),(e()(),Ci(9,0,null,null,1,"th",[["class","right"]],null,null,null,null,null)),(e()(),Pi(10,null,["",""])),(e()(),Ci(11,0,null,null,1,"th",[["class","right"]],null,null,null,null,null)),(e()(),Pi(12,null,["",""])),(e()(),Ci(13,0,null,null,1,"th",[["class","right"]],null,null,null,null,null)),(e()(),Pi(14,null,["",""])),(e()(),Ci(15,0,null,null,1,"th",[["class","right"]],null,null,null,null,null)),(e()(),Pi(16,null,["",""])),(e()(),Ci(17,0,null,null,2,"th",[["class","right"]],null,null,null,null,null)),(e()(),Ci(18,0,null,null,1,"coverage-bar",[],null,null,null,Ja,qa)),Yr(19,49152,null,0,$a,[],{percentage:[0,"percentage"]},null),(e()(),wi(16777216,null,null,1,null,ec)),Yr(21,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,nc)),Yr(23,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null)],function(e,n){var t=n.component,r=e(n,5,0,t.element.collapsed,!t.element.collapsed);e(n,4,0,r),e(n,19,0,t.element.coverage),e(n,21,0,t.branchCoverageAvailable),e(n,23,0,t.branchCoverageAvailable)},function(e,n){var t=n.component;e(n,6,0,t.element.name),e(n,8,0,t.element.coveredLines),e(n,10,0,t.element.uncoveredLines),e(n,12,0,t.element.coverableLines),e(n,14,0,t.element.totalLines),e(n,16,0,t.element.coveragePercentage)})}var rc=function(){function e(){this.path=null,this._historicCoverages=[]}return Object.defineProperty(e.prototype,"historicCoverages",{get:function(){return this._historicCoverages},set:function(e){if(this._historicCoverages=e,e.length>1){for(var n="",t=0;tn?"lightgreen":e1),e(n,4,0,null!==t.clazz.currentHistoricCoverage),e(n,6,0,null===t.clazz.currentHistoricCoverage)},null)}function Oc(e){return Ri(0,[(e()(),Ci(0,0,null,null,2,"td",[["class","right"]],null,null,null,null,null)),(e()(),Ci(1,0,null,null,1,"coverage-bar",[],null,null,null,Ja,qa)),Yr(2,49152,null,0,$a,[],{percentage:[0,"percentage"]},null)],function(e,n){e(n,2,0,n.component.clazz.branchCoverage)},null)}function Ic(e){return Ri(2,[(e()(),Ci(0,0,null,null,4,"td",[],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,sc)),Yr(2,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,ac)),Yr(4,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(5,0,null,null,4,"td",[["class","right"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,cc)),Yr(7,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,dc)),Yr(9,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(10,0,null,null,4,"td",[["class","right"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,fc)),Yr(12,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,pc)),Yr(14,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(15,0,null,null,4,"td",[["class","right"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,hc)),Yr(17,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,gc)),Yr(19,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(20,0,null,null,4,"td",[["class","right"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,vc)),Yr(22,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,yc)),Yr(24,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(25,0,null,null,6,"td",[["class","right"]],[[8,"title",0]],null,null,null,null)),(e()(),wi(16777216,null,null,1,null,mc)),Yr(27,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,bc)),Yr(29,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,_c)),Yr(31,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(32,0,null,null,2,"td",[["class","right"]],null,null,null,null,null)),(e()(),Ci(33,0,null,null,1,"coverage-bar",[],null,null,null,Ja,qa)),Yr(34,49152,null,0,$a,[],{percentage:[0,"percentage"]},null),(e()(),wi(16777216,null,null,1,null,xc)),Yr(36,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Oc)),Yr(38,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null)],function(e,n){var t=n.component;e(n,2,0,""!==t.clazz.reportPath),e(n,4,0,""===t.clazz.reportPath),e(n,7,0,null!==t.clazz.currentHistoricCoverage),e(n,9,0,null===t.clazz.currentHistoricCoverage),e(n,12,0,null!==t.clazz.currentHistoricCoverage),e(n,14,0,null===t.clazz.currentHistoricCoverage),e(n,17,0,null!==t.clazz.currentHistoricCoverage),e(n,19,0,null===t.clazz.currentHistoricCoverage),e(n,22,0,null!==t.clazz.currentHistoricCoverage),e(n,24,0,null===t.clazz.currentHistoricCoverage),e(n,27,0,t.clazz.lineCoverageHistory.length>1),e(n,29,0,null!==t.clazz.currentHistoricCoverage),e(n,31,0,null===t.clazz.currentHistoricCoverage),e(n,34,0,t.clazz.coverage),e(n,36,0,t.branchCoverageAvailable),e(n,38,0,t.branchCoverageAvailable)},function(e,n){e(n,25,0,n.component.clazz.coverageType)})}var kc=Ft({encapsulation:2,styles:[],data:{}});function Tc(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,null,null,null,null,null,null,null)),(e()(),Pi(1,null,["",""]))],null,function(e,n){e(n,1,0,n.component.translations.noGrouping)})}function Sc(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,null,null,null,null,null,null,null)),(e()(),Pi(1,null,["",""]))],null,function(e,n){e(n,1,0,n.component.translations.byAssembly)})}function Nc(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,null,null,null,null,null,null,null)),(e()(),Pi(1,null,["",""]))],null,function(e,n){var t=n.component;e(n,1,0,t.translations.byNamespace+" "+t.settings.grouping)})}function Ac(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(3,null,["",""]))],function(e,n){e(n,1,0,n.context.$implicit),e(n,2,0,n.context.$implicit)},function(e,n){e(n,3,0,n.context.$implicit)})}function Vc(e){return Ri(0,[(e()(),Ci(0,0,null,null,0,"br",[],null,null,null,null,null))],null,null)}function Pc(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[["value","branchCoverageIncreaseOnly"]],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(3,null,[" "," "]))],function(e,n){e(n,1,0,"branchCoverageIncreaseOnly"),e(n,2,0,"branchCoverageIncreaseOnly")},function(e,n){e(n,3,0,n.component.translations.branchCoverageIncreaseOnly)})}function Dc(e){return Ri(0,[(e()(),Ci(0,0,null,null,3,"option",[["value","branchCoverageDecreaseOnly"]],null,null,null,null,null)),Yr(1,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(2,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(3,null,[" "," "]))],function(e,n){e(n,1,0,"branchCoverageDecreaseOnly"),e(n,2,0,"branchCoverageDecreaseOnly")},function(e,n){e(n,3,0,n.component.translations.branchCoverageDecreaseOnly)})}function Mc(e){return Ri(0,[(e()(),Ci(0,0,null,null,26,"div",[],null,null,null,null,null)),(e()(),Ci(1,0,null,null,25,"select",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],function(e,n,t){var r=!0,o=e.component;return"change"===n&&(r=!1!==Lr(e,2).onChange(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,2).onTouched()&&r),"ngModelChange"===n&&(r=!1!==(o.settings.historyComparisionType=t)&&r),r},null,null)),Yr(2,16384,null,0,ta,[nt,Kn],null,null),Xr(1024,null,Vs,function(e){return[e]},[ta]),Yr(4,671744,null,0,Ta,[[8,null],[8,null],[8,null],[6,Vs]],{model:[0,"model"]},{update:"ngModelChange"}),Xr(2048,null,Ls,null,[Ta]),Yr(6,16384,null,0,zs,[[4,Ls]],null,null),(e()(),Ci(7,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),Yr(8,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(9,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(10,null,["",""])),(e()(),Ci(11,0,null,null,3,"option",[["value","allChanges"]],null,null,null,null,null)),Yr(12,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(13,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(14,null,["",""])),(e()(),Ci(15,0,null,null,3,"option",[["value","lineCoverageIncreaseOnly"]],null,null,null,null,null)),Yr(16,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(17,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(18,null,["",""])),(e()(),Ci(19,0,null,null,3,"option",[["value","lineCoverageDecreaseOnly"]],null,null,null,null,null)),Yr(20,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(21,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(22,null,["",""])),(e()(),wi(16777216,null,null,1,null,Pc)),Yr(24,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Dc)),Yr(26,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null)],function(e,n){var t=n.component;e(n,4,0,t.settings.historyComparisionType),e(n,8,0,""),e(n,9,0,""),e(n,12,0,"allChanges"),e(n,13,0,"allChanges"),e(n,16,0,"lineCoverageIncreaseOnly"),e(n,17,0,"lineCoverageIncreaseOnly"),e(n,20,0,"lineCoverageDecreaseOnly"),e(n,21,0,"lineCoverageDecreaseOnly"),e(n,24,0,t.branchCoverageAvailable),e(n,26,0,t.branchCoverageAvailable)},function(e,n){var t=n.component;e(n,1,0,Lr(n,6).ngClassUntouched,Lr(n,6).ngClassTouched,Lr(n,6).ngClassPristine,Lr(n,6).ngClassDirty,Lr(n,6).ngClassValid,Lr(n,6).ngClassInvalid,Lr(n,6).ngClassPending),e(n,10,0,t.translations.filter),e(n,14,0,t.translations.allChanges),e(n,18,0,t.translations.lineCoverageIncreaseOnly),e(n,22,0,t.translations.lineCoverageDecreaseOnly)})}function Rc(e){return Ri(0,[(e()(),Ci(0,0,null,null,18,null,null,null,null,null,null,null)),(e()(),Ci(1,0,null,null,13,"div",[],null,null,null,null,null)),(e()(),Pi(2,null,[" "," "])),(e()(),Ci(3,0,null,null,11,"select",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],function(e,n,t){var r=!0,o=e.component;return"change"===n&&(r=!1!==Lr(e,4).onChange(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,4).onTouched()&&r),"ngModelChange"===n&&(r=!1!==(o.settings.historyComparisionDate=t)&&r),"ngModelChange"===n&&(r=!1!==o.updateCurrentHistoricCoverage()&&r),r},null,null)),Yr(4,16384,null,0,ta,[nt,Kn],null,null),Xr(1024,null,Vs,function(e){return[e]},[ta]),Yr(6,671744,null,0,Ta,[[8,null],[8,null],[8,null],[6,Vs]],{model:[0,"model"]},{update:"ngModelChange"}),Xr(2048,null,Ls,null,[Ta]),Yr(8,16384,null,0,zs,[[4,Ls]],null,null),(e()(),Ci(9,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),Yr(10,147456,null,0,ra,[Kn,nt,[2,ta]],{value:[0,"value"]},null),Yr(11,147456,null,0,la,[Kn,nt,[8,null]],{value:[0,"value"]},null),(e()(),Pi(12,null,["",""])),(e()(),wi(16777216,null,null,1,null,Ac)),Yr(14,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(e()(),wi(16777216,null,null,1,null,Vc)),Yr(16,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Mc)),Yr(18,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(0,null,null,0))],function(e,n){var t=n.component;e(n,6,0,t.settings.historyComparisionDate),e(n,10,0,""),e(n,11,0,""),e(n,14,0,t.historicCoverageExecutionTimes),e(n,16,0,""!==t.settings.historyComparisionDate),e(n,18,0,""!==t.settings.historyComparisionDate)},function(e,n){var t=n.component;e(n,2,0,t.translations.compareHistory),e(n,3,0,Lr(n,8).ngClassUntouched,Lr(n,8).ngClassTouched,Lr(n,8).ngClassPristine,Lr(n,8).ngClassDirty,Lr(n,8).ngClassValid,Lr(n,8).ngClassInvalid,Lr(n,8).ngClassPending),e(n,12,0,t.translations.date)})}function jc(e){return Ri(0,[(e()(),Ci(0,0,null,null,0,"col",[["class","column98"]],null,null,null,null,null))],null,null)}function Hc(e){return Ri(0,[(e()(),Ci(0,0,null,null,0,"col",[["class","column112"]],null,null,null,null,null))],null,null)}function Lc(e){return Ri(0,[(e()(),Ci(0,0,null,null,6,"th",[["class","center"],["colspan","2"]],null,null,null,null,null)),(e()(),Ci(1,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("branchcoverage",t)&&r),r},null,null)),(e()(),Ci(2,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(4,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(5,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(6,null,["",""]))],function(e,n){var t=n.component,r=e(n,5,0,"branchcoverage"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"branchcoverage"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"branchcoverage"!==t.settings.sortBy);e(n,4,0,"icon-down-dir",r)},function(e,n){e(n,6,0,n.component.translations.branchCoverage)})}function zc(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,"tr",[["codeelement-row",""]],null,null,null,tc,Xa)),Yr(1,49152,null,0,Ya,[],{element:[0,"element"],collapsed:[1,"collapsed"],branchCoverageAvailable:[2,"branchCoverageAvailable"]},null)],function(e,n){e(n,1,0,n.parent.context.$implicit,n.parent.context.$implicit.collapsed,n.component.branchCoverageAvailable)},null)}function Fc(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,"tr",[["class-row",""]],null,null,null,Ic,uc)),Yr(1,49152,null,0,lc,[],{clazz:[0,"clazz"],translations:[1,"translations"],branchCoverageAvailable:[2,"branchCoverageAvailable"],historyComparisionDate:[3,"historyComparisionDate"]},null)],function(e,n){var t=n.component;e(n,1,0,n.parent.context.$implicit,t.translations,t.branchCoverageAvailable,t.settings.historyComparisionDate)},null)}function Bc(e){return Ri(0,[(e()(),Ci(0,0,null,null,2,null,null,null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,Fc)),Yr(2,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(0,null,null,0))],function(e,n){var t=n.component,r=!n.parent.context.$implicit.collapsed&&n.context.$implicit.visible(t.settings.filter,t.settings.historyComparisionType);e(n,2,0,r)},null)}function Uc(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,"tr",[["class","namespace"],["class-row",""]],null,null,null,Ic,uc)),Yr(1,49152,null,0,lc,[],{clazz:[0,"clazz"],translations:[1,"translations"],branchCoverageAvailable:[2,"branchCoverageAvailable"],historyComparisionDate:[3,"historyComparisionDate"]},null)],function(e,n){var t=n.component;e(n,1,0,n.parent.context.$implicit,t.translations,t.branchCoverageAvailable,t.settings.historyComparisionDate)},null)}function Zc(e){return Ri(0,[(e()(),Ci(0,0,null,null,2,null,null,null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,Uc)),Yr(2,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(0,null,null,0))],function(e,n){var t=n.component,r=!n.parent.parent.context.$implicit.collapsed&&n.context.$implicit.visible(t.settings.filter,t.settings.historyComparisionType);e(n,2,0,r)},null)}function Gc(e){return Ri(0,[(e()(),Ci(0,0,null,null,4,null,null,null,null,null,null,null)),(e()(),Ci(1,0,null,null,1,"tr",[["class","namespace"],["codeelement-row",""]],null,null,null,tc,Xa)),Yr(2,49152,null,0,Ya,[],{element:[0,"element"],collapsed:[1,"collapsed"],branchCoverageAvailable:[2,"branchCoverageAvailable"]},null),(e()(),wi(16777216,null,null,1,null,Zc)),Yr(4,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(e()(),wi(0,null,null,0))],function(e,n){e(n,2,0,n.parent.context.$implicit,n.parent.context.$implicit.collapsed,n.component.branchCoverageAvailable),e(n,4,0,n.parent.context.$implicit.classes)},null)}function $c(e){return Ri(0,[(e()(),Ci(0,0,null,null,2,null,null,null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,Gc)),Yr(2,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(0,null,null,0))],function(e,n){var t=n.component,r=!n.parent.context.$implicit.collapsed&&n.context.$implicit.visible(t.settings.filter,t.settings.historyComparisionType);e(n,2,0,r)},null)}function qc(e){return Ri(0,[(e()(),Ci(0,0,null,null,6,null,null,null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,zc)),Yr(2,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Bc)),Yr(4,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(e()(),wi(16777216,null,null,1,null,$c)),Yr(6,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null),(e()(),wi(0,null,null,0))],function(e,n){var t=n.component,r=n.context.$implicit.visible(t.settings.filter,t.settings.historyComparisionType);e(n,2,0,r),e(n,4,0,n.context.$implicit.classes),e(n,6,0,n.context.$implicit.subElements)},null)}function Wc(e){return Ri(0,[(e()(),Ci(0,0,null,null,97,"div",[],null,null,null,null,null)),(e()(),Ci(1,0,null,null,34,"div",[["class","customizebox"]],null,null,null,null,null)),(e()(),Ci(2,0,null,null,5,"div",[],null,null,null,null,null)),(e()(),Ci(3,0,null,null,1,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.collapseAll(t)&&r),r},null,null)),(e()(),Pi(4,null,["",""])),(e()(),Pi(-1,null,[" | "])),(e()(),Ci(6,0,null,null,1,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.expandAll(t)&&r),r},null,null)),(e()(),Pi(7,null,["",""])),(e()(),Ci(8,0,null,null,15,"div",[["class","center"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,Tc)),Yr(10,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Sc)),Yr(12,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Nc)),Yr(14,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(15,0,null,null,0,"br",[],null,null,null,null,null)),(e()(),Pi(16,null,[" "," "])),(e()(),Ci(17,0,null,null,6,"input",[["min","-1"],["step","1"],["type","range"]],[[8,"max",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(e,n,t){var r=!0,o=e.component;return"input"===n&&(r=!1!==Lr(e,18)._handleInput(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,18).onTouched()&&r),"compositionstart"===n&&(r=!1!==Lr(e,18)._compositionStart()&&r),"compositionend"===n&&(r=!1!==Lr(e,18)._compositionEnd(t.target.value)&&r),"change"===n&&(r=!1!==Lr(e,19).onChange(t.target.value)&&r),"input"===n&&(r=!1!==Lr(e,19).onChange(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,19).onTouched()&&r),"ngModelChange"===n&&(r=!1!==(o.settings.grouping=t)&&r),"ngModelChange"===n&&(r=!1!==o.updateCoverageInfo()&&r),r},null,null)),Yr(18,16384,null,0,Ms,[nt,Kn,[2,Ds]],null,null),Yr(19,16384,null,0,Ys,[nt,Kn],null,null),Xr(1024,null,Vs,function(e,n){return[e,n]},[Ms,Ys]),Yr(21,671744,null,0,Ta,[[8,null],[8,null],[8,null],[6,Vs]],{model:[0,"model"]},{update:"ngModelChange"}),Xr(2048,null,Ls,null,[Ta]),Yr(23,16384,null,0,zs,[[4,Ls]],null,null),(e()(),Ci(24,0,null,null,2,"div",[["class","center"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,Rc)),Yr(26,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(27,0,null,null,8,"div",[["class","right"]],null,null,null,null,null)),(e()(),Ci(28,0,null,null,1,"span",[],null,null,null,null,null)),(e()(),Pi(29,null,[""," "])),(e()(),Ci(30,0,null,null,5,"input",[["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(e,n,t){var r=!0,o=e.component;return"input"===n&&(r=!1!==Lr(e,31)._handleInput(t.target.value)&&r),"blur"===n&&(r=!1!==Lr(e,31).onTouched()&&r),"compositionstart"===n&&(r=!1!==Lr(e,31)._compositionStart()&&r),"compositionend"===n&&(r=!1!==Lr(e,31)._compositionEnd(t.target.value)&&r),"ngModelChange"===n&&(r=!1!==(o.settings.filter=t)&&r),r},null,null)),Yr(31,16384,null,0,Ms,[nt,Kn,[2,Ds]],null,null),Xr(1024,null,Vs,function(e){return[e]},[Ms]),Yr(33,671744,null,0,Ta,[[8,null],[8,null],[8,null],[6,Vs]],{model:[0,"model"]},{update:"ngModelChange"}),Xr(2048,null,Ls,null,[Ta]),Yr(35,16384,null,0,zs,[[4,Ls]],null,null),(e()(),Ci(36,0,null,null,61,"table",[["class","overview table-fixed stripped"]],null,null,null,null,null)),(e()(),Ci(37,0,null,null,11,"colgroup",[],null,null,null,null,null)),(e()(),Ci(38,0,null,null,0,"col",[],null,null,null,null,null)),(e()(),Ci(39,0,null,null,0,"col",[["class","column90"]],null,null,null,null,null)),(e()(),Ci(40,0,null,null,0,"col",[["class","column105"]],null,null,null,null,null)),(e()(),Ci(41,0,null,null,0,"col",[["class","column100"]],null,null,null,null,null)),(e()(),Ci(42,0,null,null,0,"col",[["class","column70"]],null,null,null,null,null)),(e()(),Ci(43,0,null,null,0,"col",[["class","column98"]],null,null,null,null,null)),(e()(),Ci(44,0,null,null,0,"col",[["class","column112"]],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,jc)),Yr(46,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),wi(16777216,null,null,1,null,Hc)),Yr(48,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(49,0,null,null,45,"thead",[],null,null,null,null,null)),(e()(),Ci(50,0,null,null,44,"tr",[],null,null,null,null,null)),(e()(),Ci(51,0,null,null,6,"th",[],null,null,null,null,null)),(e()(),Ci(52,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("name",t)&&r),r},null,null)),(e()(),Ci(53,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(55,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(56,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(57,null,["",""])),(e()(),Ci(58,0,null,null,6,"th",[["class","right"]],null,null,null,null,null)),(e()(),Ci(59,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("covered",t)&&r),r},null,null)),(e()(),Ci(60,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(62,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(63,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(64,null,["",""])),(e()(),Ci(65,0,null,null,6,"th",[["class","right"]],null,null,null,null,null)),(e()(),Ci(66,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("uncovered",t)&&r),r},null,null)),(e()(),Ci(67,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(69,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(70,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(71,null,["",""])),(e()(),Ci(72,0,null,null,6,"th",[["class","right"]],null,null,null,null,null)),(e()(),Ci(73,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("coverable",t)&&r),r},null,null)),(e()(),Ci(74,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(76,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(77,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(78,null,["",""])),(e()(),Ci(79,0,null,null,6,"th",[["class","right"]],null,null,null,null,null)),(e()(),Ci(80,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("total",t)&&r),r},null,null)),(e()(),Ci(81,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(83,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(84,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(85,null,["",""])),(e()(),Ci(86,0,null,null,6,"th",[["class","center"],["colspan","2"]],null,null,null,null,null)),(e()(),Ci(87,0,null,null,5,"a",[["href","#"]],null,[[null,"click"]],function(e,n,t){var r=!0;return"click"===n&&(r=!1!==e.component.updateSorting("coverage",t)&&r),r},null,null)),(e()(),Ci(88,0,null,null,3,"i",[["class","icon-down-dir"]],null,null,null,null,null)),Xr(512,null,au,cu,[ht,gt,Kn,nt]),Yr(90,278528,null,0,du,[au],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),Vi(91,{"icon-up-dir_active":0,"icon-down-dir_active":1,"icon-down-dir":2}),(e()(),Pi(92,null,["",""])),(e()(),wi(16777216,null,null,1,null,Lc)),Yr(94,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null),(e()(),Ci(95,0,null,null,2,"tbody",[],null,null,null,null,null)),(e()(),wi(16777216,null,null,1,null,qc)),Yr(97,278528,null,0,pu,[Et,wt,ht],{ngForOf:[0,"ngForOf"]},null)],function(e,n){var t=n.component;e(n,10,0,-1===t.settings.grouping),e(n,12,0,0===t.settings.grouping),e(n,14,0,t.settings.grouping>0),e(n,21,0,t.settings.grouping),e(n,26,0,t.historicCoverageExecutionTimes.length>0),e(n,33,0,t.settings.filter),e(n,46,0,t.branchCoverageAvailable),e(n,48,0,t.branchCoverageAvailable);var r=e(n,56,0,"name"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"name"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"name"!==t.settings.sortBy);e(n,55,0,"icon-down-dir",r);var o=e(n,63,0,"covered"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"covered"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"covered"!==t.settings.sortBy);e(n,62,0,"icon-down-dir",o);var i=e(n,70,0,"uncovered"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"uncovered"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"uncovered"!==t.settings.sortBy);e(n,69,0,"icon-down-dir",i);var l=e(n,77,0,"coverable"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"coverable"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"coverable"!==t.settings.sortBy);e(n,76,0,"icon-down-dir",l);var u=e(n,84,0,"total"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"total"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"total"!==t.settings.sortBy);e(n,83,0,"icon-down-dir",u);var s=e(n,91,0,"coverage"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"coverage"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"coverage"!==t.settings.sortBy);e(n,90,0,"icon-down-dir",s),e(n,94,0,t.branchCoverageAvailable),e(n,97,0,t.codeElements)},function(e,n){var t=n.component;e(n,4,0,t.translations.collapseAll),e(n,7,0,t.translations.expandAll),e(n,16,0,t.translations.grouping),e(n,17,0,t.settings.groupingMaximum,Lr(n,23).ngClassUntouched,Lr(n,23).ngClassTouched,Lr(n,23).ngClassPristine,Lr(n,23).ngClassDirty,Lr(n,23).ngClassValid,Lr(n,23).ngClassInvalid,Lr(n,23).ngClassPending),e(n,29,0,t.translations.filter),e(n,30,0,Lr(n,35).ngClassUntouched,Lr(n,35).ngClassTouched,Lr(n,35).ngClassPristine,Lr(n,35).ngClassDirty,Lr(n,35).ngClassValid,Lr(n,35).ngClassInvalid,Lr(n,35).ngClassPending),e(n,57,0,t.translations.name),e(n,64,0,t.translations.covered),e(n,71,0,t.translations.uncovered),e(n,78,0,t.translations.coverable),e(n,85,0,t.translations.total),e(n,92,0,t.translations.coverage)})}function Qc(e){return Ri(0,[(e()(),wi(16777216,null,null,1,null,Wc)),Yr(1,16384,null,0,gu,[Et,wt],{ngIf:[0,"ngIf"]},null)],function(e,n){e(n,1,0,n.component.codeElements.length>0)},null)}function Kc(e){return Ri(0,[(e()(),Ci(0,0,null,null,1,"coverage-info",[],null,[["window","beforeunload"]],function(e,n,t){var r=!0;return"window:beforeunload"===n&&(r=!1!==Lr(e,1).onDonBeforeUnlodad()&&r),r},Qc,kc)),Yr(1,114688,null,0,eu,[Gl],null,null)],function(e,n){e(n,1,0)},null)}var Jc=Tr("coverage-info",eu,Kc,{},{},[]),Yc=Bl(Zl,[Wl,eu],function(e){return function(e){for(var n={},t=[],r=!1,o=0;odiv { width: 25%; display: inline-block; } -.customizebox div.right input { font-size: 0.8em; width: 150px; } -#namespaceslider { width: 200px; display: inline-block; margin-left: 8px; } - -.percentagebarundefined { - border-left: 2px solid #fff; - padding-left: 3px; -} -.percentagebar0 { - border-left: 2px solid #c10909; - padding-left: 3px; -} -.percentagebar10 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 90%, #0aad0a 90%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar20 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 80%, #0aad0a 80%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar30 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 70%, #0aad0a 70%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar40 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 60%, #0aad0a 60%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar50 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 50%, #0aad0a 50%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar60 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 40%, #0aad0a 40%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar70 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 30%, #0aad0a 30%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar80 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 20%, #0aad0a 20%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar90 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 10%, #0aad0a 10%, #0aad0a 100%) 1; - padding-left: 3px; -} -.percentagebar100 { - border-left: 2px solid #0aad0a; - padding-left: 3px; -} - -.hidden, .ng-hide { display: none; } -.right { text-align: right; } -.center { text-align: center; } -.rightmargin { padding-right: 8px; } -.leftmargin { padding-left: 5px; } -.green { background-color: #0aad0a; } -.lightgreen { background-color: #dcf4dc; } -.red { background-color: #c10909; } -.lightred { background-color: #f7dede; } -.orange { background-color: #FFA500; } -.lightorange { background-color: #FFEFD5; } -.gray { background-color: #dcdcdc; } -.lightgray { color: #888888; } -.lightgraybg { background-color: #dadada; } - -.toggleZoom { text-align:right; } - -.ct-chart { position: relative; } -.ct-chart .ct-line { stroke-width: 2px !important; } -.ct-chart .ct-point { stroke-width: 6px !important; transition: stroke-width .2s; } -.ct-chart .ct-point:hover { stroke-width: 10px !important; } -.ct-chart .ct-series.ct-series-a .ct-line, .ct-chart .ct-series.ct-series-a .ct-point { stroke: #c00 !important;} -.ct-chart .ct-series.ct-series-b .ct-line, .ct-chart .ct-series.ct-series-b .ct-point { stroke: #1c2298 !important;} - -.tinylinecoveragechart, .tinybranchcoveragechart { background-color: #fff; margin-left: -3px; float: left; border: solid 1px #c1c1c1; width: 30px; height: 18px; } -.historiccoverageoffset { margin-top: 7px; } - -.tinylinecoveragechart .ct-line, .tinybranchcoveragechart .ct-line { stroke-width: 1px !important; } -.tinybranchcoveragechart .ct-series.ct-series-a .ct-line { stroke: #1c2298 !important; } - -.linecoverage { background-color: #c00; width: 10px; height: 8px; border: 1px solid #000; display: inline-block; } -.branchcoverage { background-color: #1c2298; width: 10px; height: 8px; border: 1px solid #000; display: inline-block; } - -.tooltip { position: absolute; display: none; padding: 5px; background: #F4C63D; color: #453D3F; pointer-events: none; z-index: 1; min-width: 250px; } - -.column1324 { max-width: 1324px; } -.column674 { max-width: 674px; } -.column60 { width: 60px; } -.column70 { width: 70px; } -.column90 { width: 90px; } -.column98 { width: 98px; } -.column100 { width: 100px; } -.column105 { width: 105px; } -.column112 { width: 112px; } -.column135 { width: 135px; } -.column150 { width: 150px; } - -.covered0 { width: 0px; } -.covered1 { width: 1px; } -.covered2 { width: 2px; } -.covered3 { width: 3px; } -.covered4 { width: 4px; } -.covered5 { width: 5px; } -.covered6 { width: 6px; } -.covered7 { width: 7px; } -.covered8 { width: 8px; } -.covered9 { width: 9px; } -.covered10 { width: 10px; } -.covered11 { width: 11px; } -.covered12 { width: 12px; } -.covered13 { width: 13px; } -.covered14 { width: 14px; } -.covered15 { width: 15px; } -.covered16 { width: 16px; } -.covered17 { width: 17px; } -.covered18 { width: 18px; } -.covered19 { width: 19px; } -.covered20 { width: 20px; } -.covered21 { width: 21px; } -.covered22 { width: 22px; } -.covered23 { width: 23px; } -.covered24 { width: 24px; } -.covered25 { width: 25px; } -.covered26 { width: 26px; } -.covered27 { width: 27px; } -.covered28 { width: 28px; } -.covered29 { width: 29px; } -.covered30 { width: 30px; } -.covered31 { width: 31px; } -.covered32 { width: 32px; } -.covered33 { width: 33px; } -.covered34 { width: 34px; } -.covered35 { width: 35px; } -.covered36 { width: 36px; } -.covered37 { width: 37px; } -.covered38 { width: 38px; } -.covered39 { width: 39px; } -.covered40 { width: 40px; } -.covered41 { width: 41px; } -.covered42 { width: 42px; } -.covered43 { width: 43px; } -.covered44 { width: 44px; } -.covered45 { width: 45px; } -.covered46 { width: 46px; } -.covered47 { width: 47px; } -.covered48 { width: 48px; } -.covered49 { width: 49px; } -.covered50 { width: 50px; } -.covered51 { width: 51px; } -.covered52 { width: 52px; } -.covered53 { width: 53px; } -.covered54 { width: 54px; } -.covered55 { width: 55px; } -.covered56 { width: 56px; } -.covered57 { width: 57px; } -.covered58 { width: 58px; } -.covered59 { width: 59px; } -.covered60 { width: 60px; } -.covered61 { width: 61px; } -.covered62 { width: 62px; } -.covered63 { width: 63px; } -.covered64 { width: 64px; } -.covered65 { width: 65px; } -.covered66 { width: 66px; } -.covered67 { width: 67px; } -.covered68 { width: 68px; } -.covered69 { width: 69px; } -.covered70 { width: 70px; } -.covered71 { width: 71px; } -.covered72 { width: 72px; } -.covered73 { width: 73px; } -.covered74 { width: 74px; } -.covered75 { width: 75px; } -.covered76 { width: 76px; } -.covered77 { width: 77px; } -.covered78 { width: 78px; } -.covered79 { width: 79px; } -.covered80 { width: 80px; } -.covered81 { width: 81px; } -.covered82 { width: 82px; } -.covered83 { width: 83px; } -.covered84 { width: 84px; } -.covered85 { width: 85px; } -.covered86 { width: 86px; } -.covered87 { width: 87px; } -.covered88 { width: 88px; } -.covered89 { width: 89px; } -.covered90 { width: 90px; } -.covered91 { width: 91px; } -.covered92 { width: 92px; } -.covered93 { width: 93px; } -.covered94 { width: 94px; } -.covered95 { width: 95px; } -.covered96 { width: 96px; } -.covered97 { width: 97px; } -.covered98 { width: 98px; } -.covered99 { width: 99px; } -.covered100 { width: 100px; } - - @media print { - html, body { background-color: #fff; } - .container { max-width: 100%; width: 100%; padding: 0; } - .overview colgroup col:first-child { width: 300px; } -} - -.icon-up-dir_active { - background-image: url(icon_up-dir.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNDA4IDEyMTZxMCAyNi0xOSA0NXQtNDUgMTloLTg5NnEtMjYgMC00NS0xOXQtMTktNDUgMTktNDVsNDQ4LTQ0OHExOS0xOSA0NS0xOXQ0NSAxOWw0NDggNDQ4cTE5IDE5IDE5IDQ1eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-down-dir_active { - background-image: url(icon_up-dir_active.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNDA4IDcwNHEwIDI2LTE5IDQ1bC00NDggNDQ4cS0xOSAxOS00NSAxOXQtNDUtMTlsLTQ0OC00NDhxLTE5LTE5LTE5LTQ1dDE5LTQ1IDQ1LTE5aDg5NnEyNiAwIDQ1IDE5dDE5IDQ1eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-down-dir { - background-image: url(icon_down-dir_active.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNDA4IDcwNHEwIDI2LTE5IDQ1bC00NDggNDQ4cS0xOSAxOS00NSAxOXQtNDUtMTlsLTQ0OC00NDhxLTE5LTE5LTE5LTQ1dDE5LTQ1IDQ1LTE5aDg5NnEyNiAwIDQ1IDE5dDE5IDQ1eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-info-circled { - background-image: url(icon_info-circled.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9Ijg5NiIgY3k9Ijg5NiIgcj0iNzUwIiBmaWxsPSIjZmZmIiAvPjxwYXRoIGZpbGw9IiMyOEE1RkYiIGQ9Ik0xMTUyIDEzNzZ2LTE2MHEwLTE0LTktMjN0LTIzLTloLTk2di01MTJxMC0xNC05LTIzdC0yMy05aC0zMjBxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloOTZ2MzIwaC05NnEtMTQgMC0yMyA5dC05IDIzdjE2MHEwIDE0IDkgMjN0MjMgOWg0NDhxMTQgMCAyMy05dDktMjN6bS0xMjgtODk2di0xNjBxMC0xNC05LTIzdC0yMy05aC0xOTJxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMtOXQ5LTIzem02NDAgNDE2cTAgMjA5LTEwMyAzODUuNXQtMjc5LjUgMjc5LjUtMzg1LjUgMTAzLTM4NS41LTEwMy0yNzkuNS0yNzkuNS0xMDMtMzg1LjUgMTAzLTM4NS41IDI3OS41LTI3OS41IDM4NS41LTEwMyAzODUuNSAxMDMgMjc5LjUgMjc5LjUgMTAzIDM4NS41eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; -} -.icon-plus { - background-image: url(icon_plus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNjAwIDczNnYxOTJxMCA0MC0yOCA2OHQtNjggMjhoLTQxNnY0MTZxMCA0MC0yOCA2OHQtNjggMjhoLTE5MnEtNDAgMC02OC0yOHQtMjgtNjh2LTQxNmgtNDE2cS00MCAwLTY4LTI4dC0yOC02OHYtMTkycTAtNDAgMjgtNjh0NjgtMjhoNDE2di00MTZxMC00MCAyOC02OHQ2OC0yOGgxOTJxNDAgMCA2OCAyOHQyOCA2OHY0MTZoNDE2cTQwIDAgNjggMjh0MjggNjh6Ii8+PC9zdmc+); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-minus { - background-image: url(icon_minus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNjAwIDczNnYxOTJxMCA0MC0yOCA2OHQtNjggMjhoLTEyMTZxLTQwIDAtNjgtMjh0LTI4LTY4di0xOTJxMC00MCAyOC02OHQ2OC0yOGgxMjE2cTQwIDAgNjggMjh0MjggNjh6Ii8+PC9zdmc+); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-wrench { - background-image: url(icon_wrench.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHN0eWxlPSJmaWxsOiNlNWU1ZTUiIC8+PHBhdGggZD0iTTQ0OCAxNDcycTAtMjYtMTktNDV0LTQ1LTE5LTQ1IDE5LTE5IDQ1IDE5IDQ1IDQ1IDE5IDQ1LTE5IDE5LTQ1em02NDQtNDIwbC02ODIgNjgycS0zNyAzNy05MCAzNy01MiAwLTkxLTM3bC0xMDYtMTA4cS0zOC0zNi0zOC05MCAwLTUzIDM4LTkxbDY4MS02ODFxMzkgOTggMTE0LjUgMTczLjV0MTczLjUgMTE0LjV6bTYzNC00MzVxMCAzOS0yMyAxMDYtNDcgMTM0LTE2NC41IDIxNy41dC0yNTguNSA4My41cS0xODUgMC0zMTYuNS0xMzEuNXQtMTMxLjUtMzE2LjUgMTMxLjUtMzE2LjUgMzE2LjUtMTMxLjVxNTggMCAxMjEuNSAxNi41dDEwNy41IDQ2LjVxMTYgMTEgMTYgMjh0LTE2IDI4bC0yOTMgMTY5djIyNGwxOTMgMTA3cTUtMyA3OS00OC41dDEzNS41LTgxIDcwLjUtMzUuNXExNSAwIDIzLjUgMTB0OC41IDI1eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-fork { - background-image: url(icon_fork.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHN0eWxlPSJmaWxsOiNmZmYiIC8+PHBhdGggZD0iTTY3MiAxNDcycTAtNDAtMjgtNjh0LTY4LTI4LTY4IDI4LTI4IDY4IDI4IDY4IDY4IDI4IDY4LTI4IDI4LTY4em0wLTExNTJxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTY0MCAxMjhxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTk2IDBxMCA1Mi0yNiA5Ni41dC03MCA2OS41cS0yIDI4Ny0yMjYgNDE0LTY3IDM4LTIwMyA4MS0xMjggNDAtMTY5LjUgNzF0LTQxLjUgMTAwdjI2cTQ0IDI1IDcwIDY5LjV0MjYgOTYuNXEwIDgwLTU2IDEzNnQtMTM2IDU2LTEzNi01Ni01Ni0xMzZxMC01MiAyNi05Ni41dDcwLTY5LjV2LTgyMHEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnEwIDUyLTI2IDk2LjV0LTcwIDY5LjV2NDk3cTU0LTI2IDE1NC01NyA1NS0xNyA4Ny41LTI5LjV0NzAuNS0zMSA1OS0zOS41IDQwLjUtNTEgMjgtNjkuNSA4LjUtOTEuNXEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnoiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-cube { - background-image: url(icon_cube.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHN0eWxlPSJmaWxsOiNlNWU1ZTUiIC8+PHBhdGggZD0iTTg5NiAxNjI5bDY0MC0zNDl2LTYzNmwtNjQwIDIzM3Y3NTJ6bS02NC04NjVsNjk4LTI1NC02OTgtMjU0LTY5OCAyNTR6bTgzMi0yNTJ2NzY4cTAgMzUtMTggNjV0LTQ5IDQ3bC03MDQgMzg0cS0yOCAxNi02MSAxNnQtNjEtMTZsLTcwNC0zODRxLTMxLTE3LTQ5LTQ3dC0xOC02NXYtNzY4cTAtNDAgMjMtNzN0NjEtNDdsNzA0LTI1NnEyMi04IDQ0LTh0NDQgOGw3MDQgMjU2cTM4IDE0IDYxIDQ3dDIzIDczeiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-search-plus { - background-image: url(icon_search-plus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiM2ZjZmNmYiIGQ9Ik0xMDg4IDgwMHY2NHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtMjI0djIyNHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtNjRxLTEzIDAtMjIuNS05LjV0LTkuNS0yMi41di0yMjRoLTIyNHEtMTMgMC0yMi41LTkuNXQtOS41LTIyLjV2LTY0cTAtMTMgOS41LTIyLjV0MjIuNS05LjVoMjI0di0yMjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWg2NHExMyAwIDIyLjUgOS41dDkuNSAyMi41djIyNGgyMjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXptMTI4IDMycTAtMTg1LTEzMS41LTMxNi41dC0zMTYuNS0xMzEuNS0zMTYuNSAxMzEuNS0xMzEuNSAzMTYuNSAxMzEuNSAzMTYuNSAzMTYuNSAxMzEuNSAzMTYuNS0xMzEuNSAxMzEuNS0zMTYuNXptNTEyIDgzMnEwIDUzLTM3LjUgOTAuNXQtOTAuNSAzNy41cS01NCAwLTkwLTM4bC0zNDMtMzQycS0xNzkgMTI0LTM5OSAxMjQtMTQzIDAtMjczLjUtNTUuNXQtMjI1LTE1MC0xNTAtMjI1LTU1LjUtMjczLjUgNTUuNS0yNzMuNSAxNTAtMjI1IDIyNS0xNTAgMjczLjUtNTUuNSAyNzMuNSA1NS41IDIyNSAxNTAgMTUwIDIyNSA1NS41IDI3My41cTAgMjIwLTEyNCAzOTlsMzQzIDM0M3EzNyAzNyAzNyA5MHoiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-search-minus { - background-image: url(icon_search-minus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiM2ZjZmNmYiIGQ9Ik0xMDg4IDgwMHY2NHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtNTc2cS0xMyAwLTIyLjUtOS41dC05LjUtMjIuNXYtNjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWg1NzZxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXptMTI4IDMycTAtMTg1LTEzMS41LTMxNi41dC0zMTYuNS0xMzEuNS0zMTYuNSAxMzEuNS0xMzEuNSAzMTYuNSAxMzEuNSAzMTYuNSAzMTYuNSAxMzEuNSAzMTYuNS0xMzEuNSAxMzEuNS0zMTYuNXptNTEyIDgzMnEwIDUzLTM3LjUgOTAuNXQtOTAuNSAzNy41cS01NCAwLTkwLTM4bC0zNDMtMzQycS0xNzkgMTI0LTM5OSAxMjQtMTQzIDAtMjczLjUtNTUuNXQtMjI1LTE1MC0xNTAtMjI1LTU1LjUtMjczLjUgNTUuNS0yNzMuNSAxNTAtMjI1IDIyNS0xNTAgMjczLjUtNTUuNSAyNzMuNSA1NS41IDIyNSAxNTAgMTUwIDIyNSA1NS41IDI3My41cTAgMjIwLTEyNCAzOTlsMzQzIDM0M3EzNyAzNyAzNyA5MHoiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} - -.ct-double-octave:after,.ct-major-eleventh:after,.ct-major-second:after,.ct-major-seventh:after,.ct-major-sixth:after,.ct-major-tenth:after,.ct-major-third:after,.ct-major-twelfth:after,.ct-minor-second:after,.ct-minor-seventh:after,.ct-minor-sixth:after,.ct-minor-third:after,.ct-octave:after,.ct-perfect-fifth:after,.ct-perfect-fourth:after,.ct-square:after{content:"";clear:both}.ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-grid-background,.ct-line{fill:none}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central}.ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-vertical.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{stroke-width:4px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{display:table}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{display:table}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{display:table}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{display:table}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{display:table}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{display:table}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{display:table}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{display:table}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{content:"";display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{display:table}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{display:table}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{display:table}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{display:table}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{display:table}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{display:table}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{display:table}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{display:table}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0} \ No newline at end of file diff --git a/docs/files/placeholder.html b/docs/files/placeholder.html new file mode 100644 index 0000000..9fce535 --- /dev/null +++ b/docs/files/placeholder.html @@ -0,0 +1,3 @@ + +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 new file mode 100644 index 0000000..21d4034 --- /dev/null +++ b/docs/files/placeholder.md @@ -0,0 +1 @@ +place images or other files here diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..787cc99 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,56 @@ + +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/How_Tos/Doing_A_Thing.md b/docsSrc/How_Tos/Doing_A_Thing.md deleted file mode 100644 index 032520a..0000000 --- a/docsSrc/How_Tos/Doing_A_Thing.md +++ /dev/null @@ -1,2 +0,0 @@ -# How To do this specific thing - diff --git a/docsSrc/How_Tos/Doing_Another_Thing.md b/docsSrc/How_Tos/Doing_Another_Thing.md deleted file mode 100644 index 032520a..0000000 --- a/docsSrc/How_Tos/Doing_Another_Thing.md +++ /dev/null @@ -1,2 +0,0 @@ -# How To do this specific thing - diff --git a/docsSrc/How_Tos/Scaffold_As_Types.md b/docsSrc/How_Tos/Scaffold_As_Types.md new file mode 100644 index 0000000..5ced90d --- /dev/null +++ b/docsSrc/How_Tos/Scaffold_As_Types.md @@ -0,0 +1,72 @@ +# 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 + +```fsharp +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 + +```fsharp +type BlogPostClass() = + + [] val mutable private _Id : int + member this.Id with get() = this._Id and set v = this._Id <- v + + [] val mutable private _Title : string + member this.Title with get() = this._Title and set v = this._Title <- v + + [] 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` 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 + +When implementing `DesignTimeServices` as referenced in Getting Started we can declare a `ScaffoldOptions` object. + +The `ScaffoldOptions.Default` object is equivalent to `ScaffoldOptions (ScaffoldTypesAs = RecordType, ScaffoldNullableColumnsAs = OptionTypes)` + +```fsharp +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 + () +``` diff --git a/docsSrc/Tutorials/Getting_Started.md b/docsSrc/Tutorials/Getting_Started.md index 07ff981..1b1f7be 100644 --- a/docsSrc/Tutorials/Getting_Started.md +++ b/docsSrc/Tutorials/Getting_Started.md @@ -1,13 +1,46 @@ # Getting Started -```fsharp -let foo = () -let myAge = 21 -``` +## Prerequisites +This guide assumes: + +* You have the .NET 5.0 SDK installed +* You have created a project and add the `dotnet-ef` tool + +## Installing the package +paket -## Here is the path to downloading + [lang=bash] + paket install EntityFrameworkCore.FSharp + +dotnet CLI [lang=bash] - paket install EFCore.FSharp + dotnet add package EntityFrameworkCore.FSharp + +## Note +This guide is for a simple single-project setup rather than a production-ready topology, however it should hopefully assist with the basics. + +## Configure Design Time Services + +To override the default Design Time services in EF Core, you will need to add the following file to your project + +```fsharp +module DesignTimeServices = + + open Microsoft.Extensions.DependencyInjection + open Microsoft.EntityFrameworkCore.Design + open EntityFrameworkCore.FSharp + + type DesignTimeServices() = + interface IDesignTimeServices with + member __.ConfigureDesignTimeServices(serviceCollection: IServiceCollection) = + let fSharpServices = EFCoreFSharpServices.Default + fSharpServices.ConfigureDesignTimeServices serviceCollection + () +``` + +At this point you can create your model, or scaffold one from an existing database as per usual +By default, scaffolded objects will be created as Record types objects where nullable columns of type `'a` are represented as types of `'a option` +To read more about this configuration, check out Scaffolding Types diff --git a/docsSrc/index.md b/docsSrc/index.md index 4f12bd8..672c659 100644 --- a/docsSrc/index.md +++ b/docsSrc/index.md @@ -8,7 +8,9 @@ EFCore.FSharp provides F# design time support for EF Core. ## Why use EFCore.FSharp? -I created it because I had to solve an issue with this other thing. +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. --- @@ -17,7 +19,7 @@ I created it because I had to solve an issue with this other thing.
Tutorials
-

Takes you by the hand through a series of steps to create your first thing.

+

The basics of getting started with EFCore.FSharp.

diff --git a/docsTool/Prelude.fs b/docsTool/Prelude.fs index fc2c743..6678a13 100644 --- a/docsTool/Prelude.fs +++ b/docsTool/Prelude.fs @@ -9,3 +9,37 @@ module Uri = 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 index 38e96be..3773176 100644 --- a/docsTool/Program.fs +++ b/docsTool/Program.fs @@ -1,31 +1,8 @@ -// Learn more about F# at http://fsharp.org - - open System open Fake.IO.FileSystemOperators open Fake.IO open Fake.Core -let dispose (d : #IDisposable) = d.Dispose() -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) - - -let refreshWebpageEvent = new Event() - type Configuration = { SiteBaseUrl : Uri GitHubRepoUrl : Uri @@ -35,107 +12,18 @@ type Configuration = { ProjectName : string ProjectFilesGlob : IGlobbingPattern ReleaseVersion : string + PublishPath : IO.DirectoryInfo } -let docsApiDir docsDir = docsDir @@ "Api_Reference" - -type DisposableList = - { - disposables : IDisposable list - } interface IDisposable with - member x.Dispose () = - x.disposables |> List.iter(fun s -> s.Dispose()) - - -module ProjInfo = - open System.IO - - type References = FileInfo [] - type TargetPath = FileInfo - - type ProjInfo = { - References : References - TargetPath : TargetPath - } - - open Dotnet.ProjInfo.Workspace - open Dotnet.ProjInfo.Workspace.FCS - let createFCS () = - let checker = - FCS_Checker.Create( - projectCacheSize = 200, - keepAllBackgroundResolutions = true, - keepAssemblyContents = true) - checker.ImplicitlyStartBackgroundWork <- true - checker - - let createLoader () = - let msbuildLocator = MSBuildLocator() - let config = LoaderConfig.Default msbuildLocator - let loader = Loader.Create(config) - let netFwconfig = NetFWInfoConfig.Default msbuildLocator - let netFwInfo = NetFWInfo.Create(netFwconfig) - - loader, netFwInfo - - let [] RefPrefix = "-r:" - - let findTargetPath targetPath = - if File.exists targetPath then - FileInfo targetPath - else - //HACK: Need to get dotnet-proj-info to handle configurations when extracting data - let debugFolder = sprintf "%cDebug%c" Path.DirectorySeparatorChar Path.DirectorySeparatorChar - let releaseFolder = sprintf "%cRelease%c" Path.DirectorySeparatorChar Path.DirectorySeparatorChar - let debugFolderAlt = sprintf "%cDebug%c" Path.DirectorySeparatorChar Path.AltDirectorySeparatorChar - let releaseFolderAlt = sprintf "%cRelease%c" Path.DirectorySeparatorChar Path.AltDirectorySeparatorChar - - let releasePath = targetPath.Replace(debugFolder, releaseFolder).Replace(debugFolderAlt, releaseFolderAlt) - if releasePath |> File.exists then - releasePath |> FileInfo - else - failwithf "Couldn't find a dll to generate documentationfrom %s or %s" targetPath releasePath - - let findReferences projPath : ProjInfo= - let fcs = createFCS () - let loader, netFwInfo = createLoader () - loader.LoadProjects [ projPath ] - let fcsBinder = FCSBinder(netFwInfo, loader, fcs) - match fcsBinder.GetProjectOptions(projPath) with - | Ok options -> - // printfn "OtherOptions -> %A" options - let references = - options.OtherOptions - |> Array.filter(fun s -> - s.StartsWith(RefPrefix) - ) - |> Array.map(fun s -> - // removes "-r:" from beginning of reference path - s.Remove(0,RefPrefix.Length) - |> FileInfo - ) - let dpwPo = - match options.ExtraProjectInfo with - | Some (:? ProjectOptions as dpwPo) -> dpwPo - | x -> failwithf "invalid project info %A" x - let targetPath = findTargetPath dpwPo.ExtraProjectInfo.TargetPath - { References = references ; TargetPath = targetPath} - - | Error e -> - failwithf "Couldn't read project %s - %A" projPath e - - module GenerateDocs = open DocsTool - open Fake.Core open Fake.IO.Globbing.Operators - open Fake.IO open Fable.React - open Fable.React.Helpers open FSharp.Literate open System.IO open FSharp.MetadataFormat + let docsApiDir docsDir = docsDir @@ "Api_Reference" type GeneratedDoc = { SourcePath : FileInfo option @@ -144,7 +32,6 @@ module GenerateDocs = Title : string } - let docsFileGlob docsSrcDir = !! (docsSrcDir @@ "**/*.fsx") ++ (docsSrcDir @@ "**/*.md") @@ -230,34 +117,25 @@ module GenerateDocs = let stringContainsInsenstive (filter : string) (textToSearch : string) = textToSearch.IndexOf(filter, StringComparison.CurrentCultureIgnoreCase) >= 0 - let generateDocs (libDirs : ProjInfo.References) (docSourcePaths : IGlobbingPattern) (cfg : Configuration) = + let generateDocs (docSourcePaths : IGlobbingPattern) (cfg : Configuration) = let parse (fileName : string) source = let doc = - let rref = - libDirs - |> Array.map(fun fi -> fi.FullName) - |> Array.distinct - |> Array.map(sprintf "-r:%s") - - let iref = - libDirs - |> Array.map(fun fi -> fi.DirectoryName) - |> Array.distinct - |> Array.map(sprintf "-I:\"%s\"") - let fsiArgs = [| yield "--noframework" // error FS1222: When mscorlib.dll or FSharp.Core.dll is explicitly referenced the --noframework option must also be passed - yield! iref + 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 "-r:System.Net.WebClient" // FSharp.Formatting on Windows requires this to render fsharp sections in markdown for some reason - yield! - rref - |> Seq.filter(stringContainsInsenstive "fsharp.core.dll" >> not) - |> Seq.filter(stringContainsInsenstive "NETStandard.Library.Ref" >> not) // --targetprofile:netstandard will find the "BCL" libraries + yield! dlls |] let fsiEvaluator = FSharp.Literate.FsiEvaluator(fsiArgs) match Path.GetExtension fileName with @@ -318,24 +196,36 @@ module GenerateDocs = ) |> 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 "net5.0" + }) + p + ) + + let generateAPI (cfg : Configuration) = - let generateAPI (projInfos : ProjInfo.ProjInfo array) (cfg : Configuration) = - let generate (projInfo : ProjInfo.ProjInfo) = - Trace.tracefn "Generating API Docs for %s" projInfo.TargetPath.FullName - let references = - projInfo.References - |> Array.toList - |> List.map(fun fi -> fi.DirectoryName) - |> List.distinct - let libDirs = references - let targetApiDir = docsApiDir cfg.DocsOutputDirectory.FullName @@ IO.Path.GetFileNameWithoutExtension(projInfo.TargetPath.Name) + 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( - projInfo.TargetPath.FullName, + projDll, libDirs = libDirs, sourceFolder = cfg.RepositoryRoot.FullName, sourceRepo = (cfg.GitHubRepoUrl |> Uri.simpleCombine "tree/master" |> string), - markDownComments = false + markDownComments = false, + parameters = [("project-name", projName)] ) let fi = FileInfo <| targetApiDir @@ (sprintf "%s.html" generatorOutput.AssemblyGroup.Name) @@ -358,6 +248,7 @@ module GenerateDocs = Title = sprintf "%s-%s" m.Module.Name cfg.ProjectName } ) + let typeDocs = generatorOutput.TypesInfos |> List.map (fun m -> @@ -371,59 +262,50 @@ module GenerateDocs = } ) [ indexDoc ] @ moduleDocs @ typeDocs - projInfos - |> Seq.collect(generate) - |> Seq.toList + cfg.ProjectFilesGlob + |> Seq.toArray + |> Array.Parallel.collect(generate >> List.toArray) + |> Array.toList - let buildDocs (projInfos : ProjInfo.ProjInfo array) (cfg : Configuration) = - let refs = - [| - yield! projInfos |> Array.collect (fun p -> p.References) |> Array.distinct - yield! projInfos |> Array.map(fun p -> p.TargetPath) - |] + let renderDocs (cfg : Configuration) = copyAssets cfg let generateDocs = async { try - return generateDocs refs (docsFileGlob cfg.DocsSourceDirectory.FullName) cfg + return generateDocs (docsFileGlob cfg.DocsSourceDirectory.FullName) cfg with e -> eprintfn "generateDocs failure %A" e return raise e } + let generateAPI = async { - return (generateAPI projInfos cfg) + return generateAPI cfg } + + dotnetPublish cfg Async.Parallel [generateDocs; generateAPI] |> Async.RunSynchronously |> Array.toList |> List.collect id - let renderDocs (cfg : Configuration) = - let projInfos = cfg.ProjectFilesGlob |> Seq.map(ProjInfo.findReferences) |> Seq.toArray - buildDocs projInfos cfg + let buildDocs (cfg : Configuration) = + renderDocs cfg |> renderGeneratedDocs false cfg - let watchDocs (cfg : Configuration) = - let projInfos = cfg.ProjectFilesGlob |> Seq.map(ProjInfo.findReferences) |> Seq.toArray - let initialDocs = buildDocs projInfos cfg + let watchDocs (refreshWebpageEvent : Event<_>) (cfg : Configuration) = + let initialDocs = renderDocs cfg let renderGeneratedDocs = renderGeneratedDocs true initialDocs |> renderGeneratedDocs cfg - let refs = - [| - yield! projInfos |> Array.collect (fun p -> p.References) |> Array.distinct - yield! projInfos |> Array.map(fun p -> p.TargetPath) - |] - - let d1 = + 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 refs (!! m.FullPath) cfg + let generated = generateDocs (!! m.FullPath) cfg initialDocs |> List.filter(fun x -> generated |> List.exists(fun y -> y.OutputPath = x.OutputPath) |> not ) |> List.append generated @@ -432,7 +314,8 @@ module GenerateDocs = ) refreshWebpageEvent.Trigger "m.FullPath" ) - let d2 = + + let contentWatcher = !! (cfg.DocsSourceDirectory.FullName "content" "**/*") ++ (cfg.DocsSourceDirectory.FullName "files" "**/*") |> ChangeWatcher.run(fun changes -> @@ -441,16 +324,26 @@ module GenerateDocs = refreshWebpageEvent.Trigger "Assets" ) - - let d3 = - projInfos - |> Seq.map(fun p -> p.TargetPath.FullName) - |> Seq.fold ((++)) (!! "") - - |> ChangeWatcher.run(fun changes -> + 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 ) - let generated = generateAPI projInfos cfg + dotnetPublish cfg + let generated = generateAPI cfg initialDocs |> List.filter(fun x -> generated |> List.exists(fun y -> y.OutputPath = x.OutputPath) |> not ) |> List.append generated @@ -458,110 +351,13 @@ module GenerateDocs = |> renderGeneratedDocs cfg refreshWebpageEvent.Trigger "Api" ) - { disposables = [d1; d2; d3] } :> IDisposable - - -module WebServer = - open Microsoft.AspNetCore.Hosting - open Microsoft.AspNetCore.Builder - open Microsoft.Extensions.FileProviders - open Microsoft.AspNetCore.Http - 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 -> - middlware env (next.Invoke >> Async.AwaitTask) - |> Async.StartAsTask - :> System.Threading.Tasks.Task - ) - - let createWebsocketForLiveReload (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 (appBuilder : IApplicationBuilder) = - appBuilder.UseWebSockets() - |> useAsync (createWebsocketForLiveReload) - |> ignore - - let startWebserver docsDir (url : string) = - WebHostBuilder() - .UseKestrel() - .UseUrls(url) - .Configure(fun app -> - let opts = - StaticFileOptions( - FileProvider = new PhysicalFileProvider(docsDir) - ) - app.UseStaticFiles(opts) |> ignore - configureWebsocket 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 docsDir = - async { - waitForPortInUse hostname port - sprintf "http://%s:%d/index.html" hostname port |> openBrowser - } |> Async.Start - startWebserver docsDir (sprintf "http://%s:%d" hostname port) + [ + docsSrcWatcher + contentWatcher + apiDocsWatcher + ] + |> Diposeable.DisposableList.Create open FSharp.Formatting.Common @@ -581,18 +377,27 @@ let setupFsharpFormattingLogging () = |> 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 ) @@ -602,13 +407,14 @@ let main argv = 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 Fake.Core.Environment.isWindows then + if Environment.isWindows then sprintf "%s.exe" name else name @@ -629,7 +435,7 @@ let main argv = | BuildArgs.ProjectName repo -> { state with ProjectName = repo} | BuildArgs.ReleaseVersion version -> { state with ReleaseVersion = version} ) - GenerateDocs.renderDocs config + GenerateDocs.buildDocs config | Watch args -> let config = (defaultConfig, args.GetAllResults()) @@ -641,8 +447,8 @@ let main argv = | WatchArgs.ProjectName repo -> { state with ProjectName = repo} | WatchArgs.ReleaseVersion version -> { state with ReleaseVersion = version} ) - use ds = GenerateDocs.watchDocs config - WebServer.serveDocs config.DocsOutputDirectory.FullName + use ds = GenerateDocs.watchDocs refreshWebpageEvent config + WebServer.serveDocs refreshWebpageEvent config.DocsOutputDirectory.FullName 0 with e -> eprintfn "Fatal error: %A" e diff --git a/docsTool/Properties/launchSettings.json b/docsTool/Properties/launchSettings.json new file mode 100644 index 0000000..c568ae4 --- /dev/null +++ b/docsTool/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:62213/", + "sslPort": 44346 + } + }, + "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/WebServer.fs b/docsTool/WebServer.fs new file mode 100644 index 0000000..9cf68d7 --- /dev/null +++ b/docsTool/WebServer.fs @@ -0,0 +1,104 @@ +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 -> + 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 index 75a5b96..ea547a5 100644 --- a/docsTool/docsTool.fsproj +++ b/docsTool/docsTool.fsproj @@ -1,8 +1,8 @@ - + Exe - netcoreapp3.1 + net5.0 false @@ -16,6 +16,7 @@ + diff --git a/docsTool/paket.references b/docsTool/paket.references index 86b6919..9162e51 100644 --- a/docsTool/paket.references +++ b/docsTool/paket.references @@ -6,4 +6,3 @@ Fake.DotNet.Cli FSharp.Formatting FSharp.Literate Fable.React -Dotnet.ProjInfo.Workspace.FCS diff --git a/global.json b/global.json new file mode 100644 index 0000000..ee202b2 --- /dev/null +++ b/global.json @@ -0,0 +1,6 @@ +{ + "sdk": { + "version": "5.0.100", + "rollForward": "latestFeature" + } +} diff --git a/paket.dependencies b/paket.dependencies index 308bc54..6df5403 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,41 +1,42 @@ -version 5.245.1 - source https://www.nuget.org/api/v2 source https://api.nuget.org/v3/index.json storage: none -nuget FSharp.Core 4.6.2 -nuget Microsoft.SourceLink.GitHub prerelease copy_local: true -nuget Expecto 8.13.1 -nuget YoloDev.Expecto.TestSdk 0.8.0 -nuget Microsoft.NET.Test.Sdk 15.7.2 -nuget altcover ~> 6 +nuget FSharp.Core 5.0.0 +nuget Microsoft.SourceLink.GitHub 1.0.0 copy_local: true +nuget Expecto 9.0.2 +nuget YoloDev.Expecto.TestSdk 0.11.1 +nuget Microsoft.NET.Test.Sdk 16.8.3 +nuget altcover ~> 7 -nuget Microsoft.EntityFrameworkCore.Design >= 3.1.5 -nuget Microsoft.EntityFrameworkCore.Sqlite >= 3.1.5 -nuget Microsoft.EntityFrameworkCore.SqlServer >= 3.1.5 -nuget Microsoft.EntityFrameworkCore.Specification.Tests >= 3.1.5 -nuget FSharp.Compiler.Service 34.0.1 -nuget Microsoft.CodeAnalysis >= 3.6.0 +nuget Microsoft.EntityFrameworkCore.Design 5.0.3 +nuget Microsoft.EntityFrameworkCore.Relational 5.0.3 +nuget Microsoft.EntityFrameworkCore.Sqlite 5.0.3 +nuget Microsoft.EntityFrameworkCore.SqlServer 5.0.3 +nuget Microsoft.EntityFrameworkCore.Specification.Tests 5.0.3 +nuget FSharp.Compiler.Service 38.0.2 +nuget Microsoft.CodeAnalysis >= 3.8.0 nuget Fantomas +nuget NetTopologySuite.IO.SqlServerBytes 2.0.0 +nuget System.Runtime.Numerics // [ 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 5.20.1 - nuget Fake.Core.Target 5.20.1 - nuget Fake.Core.ReleaseNotes 5.20.1 - nuget FAKE.Core.Environment 5.20.1 - nuget Fake.DotNet.Cli 5.20.1 - nuget FAKE.Core.Process 5.20.1 - nuget Fake.DotNet.AssemblyInfoFile 5.20.1 - nuget Fake.Tools.Git 5.20.1 - nuget Fake.DotNet.Paket 5.20.1 - nuget Fake.Api.GitHub 5.20.1 - nuget Fake.BuildServer.AppVeyor 5.20.1 - nuget Fake.BuildServer.Travis 5.20.1 - nuget Fantomas + nuget Fake.IO.FileSystem 5.20.4-alpha.1642 + nuget Fake.Core.Target 5.20.4-alpha.1642 + nuget Fake.Core.ReleaseNotes 5.20.4-alpha.1642 + nuget FAKE.Core.Environment 5.20.4-alpha.1642 + nuget Fake.DotNet.Cli 5.20.4-alpha.1642 + nuget FAKE.Core.Process 5.20.4-alpha.1642 + nuget Fake.DotNet.AssemblyInfoFile 5.20.4-alpha.1642 + nuget Fake.Tools.Git 5.20.4-alpha.1642 + nuget Fake.DotNet.Paket 5.20.4-alpha.1642 + nuget Fake.Api.GitHub 5.20.4-alpha.1642 + nuget Fake.BuildServer.AppVeyor 5.20.4-alpha.1642 + nuget Fake.BuildServer.Travis 5.20.4-alpha.1642 + nuget Fantomas 3.2 nuget Argu group Docs @@ -44,16 +45,15 @@ group Docs source https://api.nuget.org/v3/index.json nuget Argu nuget FSharp.Core - nuget Fake.IO.FileSystem - nuget FAKE.Core.Environment - nuget Fake.DotNet.Cli + nuget Fake.IO.FileSystem 5.20.4-alpha.1642 + nuget FAKE.Core.Environment 5.20.4-alpha.1642 + nuget Fake.DotNet.Cli 5.20.4-alpha.1642 nuget FSharp.Formatting 4.0.0-rc1 nuget FSharp.Literate 4.0.0-rc1 + nuget FSharp.Compiler.Service 34.1 nuget Fable.React - nuget Dotnet.ProjInfo.Workspace.FCS - nuget FSharp.Compiler.Service 34.1.1 group Analyzers source https://www.nuget.org/api/v2 source https://api.nuget.org/v3/index.json - nuget BinaryDefense.FSharp.Analyzers.Hashing 0.1.0 + nuget BinaryDefense.FSharp.Analyzers.Hashing 0.2.1 diff --git a/paket.lock b/paket.lock index b21663c..f74d528 100644 --- a/paket.lock +++ b/paket.lock @@ -1,7 +1,7 @@ STORAGE: NONE NUGET remote: https://www.nuget.org/api/v2 - altcover (6.8.761) + altcover (7.6.812) Castle.Core (4.4.1) - restriction: >= netcoreapp3.1 NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) System.Collections.Specialized (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) @@ -13,263 +13,274 @@ NUGET System.Reflection.Emit (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - Expecto (8.13.1) - FSharp.Core (>= 4.3.4) - restriction: || (>= net461) (>= netstandard2.0) - Mono.Cecil (>= 0.11) - restriction: || (>= net461) (>= netstandard2.0) - Fantomas (3.2) - FSharp.Compiler.Service (>= 33.0) - restriction: >= netstandard2.0 - FSharp.Compiler.Service (34.0.1) - FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) - System.Buffers (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.Process (>= 4.1) - restriction: && (< net461) (>= netstandard2.0) - System.Diagnostics.TraceSource (>= 4.0) - restriction: && (< net461) (>= netstandard2.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Reflection.Metadata (>= 1.6) - restriction: || (>= net461) (>= netstandard2.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Runtime.Loader (>= 4.0) - restriction: && (< net461) (>= netstandard2.0) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.ValueTuple (>= 4.4) - restriction: >= net461 - FSharp.Core (4.6.2) - System.Collections (>= 4.0.11) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Console (>= 4.0) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Diagnostics.Debug (>= 4.0.11) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Diagnostics.Tools (>= 4.0.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Globalization (>= 4.0.11) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.IO (>= 4.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Linq (>= 4.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Linq.Expressions (>= 4.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Linq.Queryable (>= 4.0.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Net.Requests (>= 4.0.11) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Reflection (>= 4.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Reflection.Extensions (>= 4.0.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Resources.ResourceManager (>= 4.0.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Runtime (>= 4.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Runtime.Extensions (>= 4.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Runtime.Numerics (>= 4.0.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Text.RegularExpressions (>= 4.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Threading (>= 4.0.11) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Threading.Tasks (>= 4.0.11) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Threading.Tasks.Parallel (>= 4.0.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Threading.Thread (>= 4.0) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Threading.ThreadPool (>= 4.0.10) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Threading.Timer (>= 4.0.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - Humanizer.Core (2.8.26) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (1.1.1) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0)) (>= netstandard2.1) - Microsoft.Bcl.HashCode (1.1) - restriction: >= netcoreapp3.1 - Microsoft.Build.Tasks.Git (1.1.0-beta-20204-02) - copy_local: true - Microsoft.CodeAnalysis (3.6) - Microsoft.CodeAnalysis.CSharp.Workspaces (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic.Workspaces (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (3.0) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 3.0) - restriction: >= netstandard2.0 + Expecto (9.0.2) + FSharp.Core (>= 4.6) - restriction: || (>= net461) (>= netstandard2.0) + Mono.Cecil (>= 0.11.2) - restriction: || (>= net461) (>= netstandard2.0) + Fantomas (4.4) + FSharp.Compiler.Service (>= 38.0.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 5.0) - restriction: >= netstandard2.0 + FSharp.Compiler.Service (38.0.2) + FSharp.Core (5.0) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Core (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.6) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 System.Collections.Immutable (>= 1.5) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.3) - restriction: >= netstandard2.0 + System.Diagnostics.Process (>= 4.3) - restriction: >= netstandard2.0 + System.Diagnostics.TraceSource (>= 4.3) - restriction: >= netstandard2.0 + System.Linq.Expressions (>= 4.3) - restriction: >= netstandard2.0 + System.Linq.Queryable (>= 4.3) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 + System.Net.Requests (>= 4.3) - restriction: >= netstandard2.0 + System.Net.Security (>= 4.3) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.3) - restriction: >= netstandard2.0 System.Reflection.Metadata (>= 1.6) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 4.7) - restriction: >= netstandard2.0 + System.Reflection.TypeExtensions (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.InteropServices (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.Loader (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Claims (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Principal (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.Tasks.Parallel (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.Thread (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.ThreadPool (>= 4.3) - restriction: >= netstandard2.0 + FSharp.Core (5.0) + Humanizer.Core (2.8.26) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0) (>= netstandard2.1)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Build.Framework (16.9) - restriction: >= netstandard2.0 + System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.Build.Tasks.Core (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) + System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net472) (>= netstandard2.0) + System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 + System.Runtime.InteropServices (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Git (1.0) - copy_local: true + Microsoft.Build.Utilities.Core (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.CodeAnalysis (3.9) + Microsoft.CodeAnalysis.CSharp.Workspaces (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.VisualBasic.Workspaces (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (3.3.2) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (>= 3.0) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 5.0) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 System.Text.Encoding.CodePages (>= 4.5.1) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (3.6) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp.Workspaces (3.9) - restriction: >= netstandard2.0 Humanizer.Core (>= 2.2) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic.Workspaces (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (3.6) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 1.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.6) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.Common (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.VisualBasic (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.VisualBasic.Workspaces (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.VisualBasic (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.Common (3.9) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.Common (3.9) - restriction: >= netstandard2.0 + Humanizer.Core (>= 2.2) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (3.9) - restriction: >= netstandard2.0 System.Composition (>= 1.0.31) - restriction: >= netstandard2.0 - Microsoft.CodeCoverage (16.6.1) - restriction: || (>= net45) (>= netcoreapp1.0) - Microsoft.CSharp (4.7) - restriction: || (>= netstandard2.0) (>= uap10.0) - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Dynamic.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.Data.SqlClient (2.0) - restriction: >= netstandard2.0 - Microsoft.Data.SqlClient.SNI (>= 2.0) - restriction: >= net46 - Microsoft.Data.SqlClient.SNI.runtime (>= 2.0) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.Identity.Client (>= 4.14) - restriction: || (>= net46) (>= netstandard2.0) - Microsoft.IdentityModel.JsonWebTokens (>= 5.6) - restriction: || (>= net46) (>= netstandard2.0) - Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 5.6) - restriction: || (>= net46) (>= netstandard2.0) - Microsoft.Win32.Registry (>= 4.7) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Buffers (>= 4.5.1) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) - System.Configuration.ConfigurationManager (>= 4.7) - restriction: >= netcoreapp2.1 - System.Diagnostics.DiagnosticSource (>= 4.7) - restriction: >= netcoreapp2.1 - System.Memory (>= 4.5.4) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) - System.Runtime.Caching (>= 4.7) - restriction: >= netcoreapp2.1 - System.Security.Principal.Windows (>= 4.7) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Text.Encoding.CodePages (>= 4.7) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.Data.SqlClient.SNI (2.0) - restriction: && (>= net46) (>= netstandard2.0) - Microsoft.Data.SqlClient.SNI.runtime (2.0) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.Data.Sqlite.Core (3.1.5) - restriction: >= netstandard2.0 - SQLitePCLRaw.core (>= 2.0.2) - restriction: >= netstandard2.0 - Microsoft.DotNet.PlatformAbstractions (3.1.5) - restriction: >= netstandard2.0 - System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: || (>= net45) (&& (>= netstandard1.3) (< netstandard2.0)) - Microsoft.EntityFrameworkCore (3.1.5) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 1.1.1) - restriction: >= netstandard2.0 - Microsoft.Bcl.HashCode (>= 1.1) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Abstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Analyzers (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Caching.Memory (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.DependencyInjection (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Logging (>= 3.1.5) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 1.7.1) - restriction: >= netstandard2.0 - System.ComponentModel.Annotations (>= 4.7) - restriction: >= netstandard2.0 - System.Diagnostics.DiagnosticSource (>= 4.7.1) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Abstractions (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.EntityFrameworkCore.Analyzers (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.EntityFrameworkCore.Design (3.1.5) - Microsoft.CSharp (>= 4.7) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Relational (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Proxies (3.1.5) - restriction: >= netcoreapp3.1 - Castle.Core (>= 4.4) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Relational (3.1.5) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Specification.Tests (3.1.5) - Microsoft.EntityFrameworkCore (>= 3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.EntityFrameworkCore.Proxies (>= 3.1.5) - restriction: >= netcoreapp3.1 - NetTopologySuite (>= 2.0) - restriction: >= netcoreapp3.1 - xunit (>= 2.4.1) - restriction: >= netcoreapp3.1 - Microsoft.EntityFrameworkCore.Sqlite (3.1.5) - Microsoft.EntityFrameworkCore.Sqlite.Core (>= 3.1.5) - restriction: >= netstandard2.0 - SQLitePCLRaw.bundle_e_sqlite3 (>= 2.0.2) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Sqlite.Core (3.1.5) - restriction: >= netstandard2.0 - Microsoft.Data.Sqlite.Core (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.DotNet.PlatformAbstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Relational (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.DependencyModel (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.SqlServer (3.1.5) - Microsoft.Data.SqlClient (>= 1.0.19269.1) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore.Relational (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Caching.Abstractions (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.Primitives (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Caching.Memory (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.Caching.Abstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Logging.Abstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Options (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Configuration (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.Configuration.Abstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Configuration.Abstractions (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.Primitives (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Configuration.Binder (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.Configuration (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.DependencyInjection (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.5) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.DependencyModel (3.1.5) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 9.0.1) - restriction: || (>= net451) (&& (>= netstandard1.3) (< netstandard1.6)) (&& (>= netstandard1.6) (< netstandard2.0)) - System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: || (>= net451) (&& (>= netstandard1.3) (< netstandard1.6)) (&& (>= netstandard1.6) (< netstandard2.0)) - System.Text.Json (>= 4.7.2) - restriction: && (< net451) (>= netstandard2.0) - Microsoft.Extensions.Logging (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.Configuration.Binder (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.DependencyInjection (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Logging.Abstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Options (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Logging.Abstractions (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.Options (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Primitives (>= 3.1.5) - restriction: >= netstandard2.0 - Microsoft.Extensions.Primitives (3.1.5) - restriction: >= netcoreapp3.1 - Microsoft.Identity.Client (4.15) - restriction: >= netstandard2.0 - Microsoft.CSharp (>= 4.5) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard1.3) (< xamarinmac)) (>= netcoreapp2.1) (>= uap10.0) (>= xamarinios) + System.IO.Pipelines (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.CodeCoverage (16.9.1) - restriction: || (>= net45) (>= netcoreapp2.1) + Microsoft.CSharp (4.7) - restriction: || (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (>= netstandard2.1) + Microsoft.Data.SqlClient (2.1.2) - restriction: >= netstandard2.1 + Microsoft.Data.SqlClient.SNI.runtime (>= 2.1.1) - restriction: || (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.Identity.Client (>= 4.21.1) - restriction: || (>= net46) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.IdentityModel.JsonWebTokens (>= 6.8) - restriction: || (>= net46) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 6.8) - restriction: || (>= net46) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.Win32.Registry (>= 4.7) - restriction: || (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + System.Buffers (>= 4.5.1) - restriction: || (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) + System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.1) + System.Diagnostics.DiagnosticSource (>= 4.7) - restriction: || (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.1) + System.Memory (>= 4.5.4) - restriction: || (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) + System.Runtime.Caching (>= 4.7) - restriction: || (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + System.Security.Principal.Windows (>= 4.7) - restriction: || (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + System.Text.Encoding.CodePages (>= 4.7) - restriction: || (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.Data.SqlClient.SNI.runtime (2.1.1) - restriction: || (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.Data.Sqlite.Core (5.0.4) - restriction: >= netstandard2.1 + SQLitePCLRaw.core (>= 2.0.4) - restriction: >= netstandard2.0 + Microsoft.DotNet.PlatformAbstractions (3.1.6) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore (5.0.4) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Abstractions (>= 5.0.4) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Analyzers (>= 5.0.4) - restriction: >= netstandard2.1 + Microsoft.Extensions.Caching.Memory (>= 5.0) - restriction: >= netstandard2.1 + Microsoft.Extensions.DependencyInjection (>= 5.0.1) - restriction: >= netstandard2.1 + Microsoft.Extensions.Logging (>= 5.0) - restriction: >= netstandard2.1 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.1 + System.ComponentModel.Annotations (>= 5.0) - restriction: >= netstandard2.1 + System.Diagnostics.DiagnosticSource (>= 5.0.1) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Abstractions (5.0.4) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Analyzers (5.0.4) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Design (5.0.3) + Humanizer.Core (>= 2.8.26) - restriction: >= netstandard2.1 + Microsoft.CSharp (>= 4.7) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Relational (>= 5.0.3) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Proxies (5.0.4) - restriction: >= netcoreapp3.1 + Castle.Core (>= 4.4.1) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore (>= 5.0.4) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Relational (5.0.3) + Microsoft.EntityFrameworkCore (>= 5.0.3) - restriction: >= netstandard2.1 + Microsoft.Extensions.Configuration.Abstractions (>= 5.0) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Specification.Tests (5.0.3) + Microsoft.EntityFrameworkCore (>= 5.0.3) - restriction: >= netcoreapp3.1 + Microsoft.EntityFrameworkCore.Proxies (>= 5.0.3) - restriction: >= netcoreapp3.1 + NetTopologySuite (>= 2.1) - restriction: >= netcoreapp3.1 + Newtonsoft.Json (>= 12.0.3) - restriction: >= netcoreapp3.1 + xunit.assert (>= 2.4.1) - restriction: >= netcoreapp3.1 + xunit.core (>= 2.4.1) - restriction: >= netcoreapp3.1 + Microsoft.EntityFrameworkCore.Sqlite (5.0.3) + Microsoft.EntityFrameworkCore.Sqlite.Core (>= 5.0.3) - restriction: >= netstandard2.1 + SQLitePCLRaw.bundle_e_sqlite3 (>= 2.0.4) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Sqlite.Core (5.0.3) - restriction: >= netstandard2.1 + Microsoft.Data.Sqlite.Core (>= 5.0.3) - restriction: >= netstandard2.1 + Microsoft.DotNet.PlatformAbstractions (>= 3.1.6) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Relational (>= 5.0.3) - restriction: >= netstandard2.1 + Microsoft.Extensions.DependencyModel (>= 5.0) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.SqlServer (5.0.3) + Microsoft.Data.SqlClient (>= 2.0.1) - restriction: >= netstandard2.1 + Microsoft.EntityFrameworkCore.Relational (>= 5.0.3) - restriction: >= netstandard2.1 + Microsoft.Extensions.Caching.Abstractions (5.0) - restriction: >= netstandard2.1 + Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Caching.Memory (5.0) - restriction: >= netstandard2.1 + Microsoft.Extensions.Caching.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (5.0) - restriction: >= netstandard2.1 + Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection (5.0.1) - restriction: >= netstandard2.1 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.0) + Microsoft.Extensions.DependencyInjection.Abstractions (5.0) - restriction: || (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.0) + Microsoft.Extensions.DependencyModel (5.0) - restriction: >= netstandard2.1 + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Text.Encodings.Web (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< net5.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Text.Json (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< net5.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Extensions.Logging (5.0) - restriction: >= netstandard2.1 + Microsoft.Extensions.DependencyInjection (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + System.Diagnostics.DiagnosticSource (>= 5.0) - restriction: || (>= net461) (&& (< net5.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Extensions.Logging.Abstractions (5.0) - restriction: >= netstandard2.1 + Microsoft.Extensions.Options (5.0) - restriction: >= netstandard2.1 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + Microsoft.Extensions.Primitives (5.0) - restriction: >= netstandard2.1 + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Identity.Client (4.28) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.CSharp (>= 4.5) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinios) (< xamarinmac) - System.ComponentModel.TypeConverter (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard1.3) (< uap10.0) (< xamarinmac)) (>= netcoreapp2.1) (>= xamarinios) + System.ComponentModel.TypeConverter (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinmac)) (>= xamarinios) System.Diagnostics.Process (>= 4.3) - restriction: && (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinios) (< xamarinmac) System.Dynamic.Runtime (>= 4.3) - restriction: && (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinios) (< xamarinmac) - System.Net.NameResolution (>= 4.3) - restriction: || (>= netcoreapp2.1) (>= uap10.0) - System.Private.Uri (>= 4.3.2) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard1.3) (< uap10.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) - System.Runtime.Serialization.Formatters (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard1.3) (< xamarinmac)) (>= netcoreapp2.1) (>= uap10.0) (>= xamarinios) - System.Runtime.Serialization.Json (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard1.3) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (>= uap10.0) - System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard1.3) (< xamarinmac)) (>= netcoreapp2.1) (>= uap10.0) (>= xamarinios) + System.Private.Uri (>= 4.3.2) - restriction: && (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinios) (< xamarinmac) + System.Runtime.Serialization.Formatters (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) + System.Runtime.Serialization.Json (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinios) (< xamarinmac)) (>= uap10.0) + System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: && (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinios) (< xamarinmac) - System.Security.SecureString (>= 4.3) - restriction: || (>= monoandroid9.0) (&& (< net45) (>= netstandard1.3) (< xamarinmac)) (>= netcoreapp2.1) (>= uap10.0) (>= xamarinios) - System.ServiceModel.Http (>= 4.5.3) - restriction: >= uap10.0 - System.ServiceModel.NetTcp (>= 4.5.3) - restriction: >= uap10.0 - System.ServiceModel.Security (>= 4.5.3) - restriction: >= uap10.0 - System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard1.3) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (>= uap10.0) + System.Security.SecureString (>= 4.3) - restriction: || (>= monoandroid9.0) (&& (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) + System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinios) (< xamarinmac)) (>= uap10.0) System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinmac)) (>= xamarinios) - Xamarin.Android.Support.CustomTabs (>= 28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.AndroidX.Browser (>= 1.0) - restriction: >= monoandroid10.0 - Microsoft.IdentityModel.JsonWebTokens (6.6) - restriction: >= netstandard2.0 - Microsoft.IdentityModel.Tokens (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Logging (6.6) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) - Microsoft.IdentityModel.Protocols (6.6) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) - Microsoft.IdentityModel.Logging (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Tokens (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Protocols.OpenIdConnect (6.6) - restriction: >= netstandard2.0 - Microsoft.IdentityModel.Protocols (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - System.IdentityModel.Tokens.Jwt (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Tokens (6.6) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) + Microsoft.IdentityModel.JsonWebTokens (6.9) - restriction: || (&& (>= net45) (< netstandard2.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.IdentityModel.Tokens (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + Microsoft.IdentityModel.Logging (6.9) - restriction: || (&& (>= net45) (< netstandard2.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.IdentityModel.Protocols (6.9) - restriction: || (&& (>= net45) (< netstandard2.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.IdentityModel.Logging (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + Microsoft.IdentityModel.Tokens (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + Microsoft.IdentityModel.Protocols.OpenIdConnect (6.9) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.IdentityModel.Protocols (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + System.IdentityModel.Tokens.Jwt (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + Microsoft.IdentityModel.Tokens (6.9) - restriction: || (&& (>= net45) (< netstandard2.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) Microsoft.CSharp (>= 4.5) - restriction: && (< net45) (>= netstandard2.0) - Microsoft.IdentityModel.Logging (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + Microsoft.Extensions.Caching.Memory (>= 2.1.1) - restriction: && (< net45) (>= netstandard2.0) + Microsoft.IdentityModel.Logging (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) System.Security.Cryptography.Cng (>= 4.5) - restriction: && (< net45) (>= netstandard2.0) - Microsoft.NET.Test.Sdk (15.7.2) - Microsoft.CodeCoverage (>= 1.0.3) - restriction: || (>= net45) (>= netcoreapp1.0) - Microsoft.TestPlatform.TestHost (>= 15.7.2) - restriction: >= netcoreapp1.0 + Microsoft.NET.Test.Sdk (16.8.3) + Microsoft.CodeCoverage (>= 16.8.3) - restriction: || (>= net45) (>= netcoreapp2.1) + Microsoft.TestPlatform.TestHost (>= 16.8.3) - restriction: >= netcoreapp2.1 Newtonsoft.Json (>= 9.0.1) - restriction: >= uap10.0 System.ComponentModel.Primitives (>= 4.1) - restriction: >= uap10.0 System.ComponentModel.TypeConverter (>= 4.1) - restriction: >= uap10.0 System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: >= uap10.0 - Microsoft.NETCore.Platforms (3.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard2.0) (< win8)) (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net46) (< netstandard1.3) (>= netstandard2.0)) (&& (< net45) (>= net461) (< netstandard1.3) (>= netstandard2.0)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (< netstandard1.0) (>= netstandard2.0) (< portable-net45+win8)) (&& (< netstandard1.3) (>= netstandard2.0) (>= uap10.1) (< win8) (< wpa81)) (&& (>= netstandard2.0) (< portable-net45+win8+wpa81)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= wp8)) - Microsoft.NETCore.Targets (3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (< netstandard2.0)) - Microsoft.SourceLink.Common (1.1.0-beta-20204-02) - copy_local: true - Microsoft.SourceLink.GitHub (1.1.0-beta-20204-02) - copy_local: true - Microsoft.Build.Tasks.Git (>= 1.1.0-beta-20204-02) - Microsoft.SourceLink.Common (>= 1.1.0-beta-20204-02) - Microsoft.TestPlatform.ObjectModel (16.6.1) - restriction: || (&& (>= netcoreapp1.0) (>= uap10.0)) (>= netcoreapp2.1) - NuGet.Frameworks (>= 5.0) - restriction: || (>= net451) (>= netstandard2.0) - Microsoft.TestPlatform.TestHost (16.6.1) - restriction: >= netcoreapp1.0 - Microsoft.TestPlatform.ObjectModel (>= 16.6.1) - restriction: || (>= netcoreapp2.1) (>= uap10.0) - Newtonsoft.Json (>= 9.0.1) - restriction: || (>= netcoreapp2.1) (>= uap10.0) - Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + Microsoft.NETCore.Platforms (5.0.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.0) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) + Microsoft.SourceLink.Common (1.0) - copy_local: true + Microsoft.SourceLink.GitHub (1.0) - copy_local: true + Microsoft.Build.Tasks.Git (>= 1.0) + Microsoft.SourceLink.Common (>= 1.0) + Microsoft.TestPlatform.ObjectModel (16.9.1) - restriction: >= netcoreapp2.1 + NuGet.Frameworks (>= 5.0) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard2.0) (< uap10.0)) (>= net451) + System.Reflection.Metadata (>= 1.6) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< uap10.0)) (&& (< net45) (>= netstandard2.0) (< uap10.0)) (>= net451) + Microsoft.TestPlatform.TestHost (16.9.1) - restriction: >= netcoreapp2.1 + Microsoft.TestPlatform.ObjectModel (>= 16.9.1) - restriction: || (>= netcoreapp1.0) (>= uap10.0) + Newtonsoft.Json (>= 9.0.1) - restriction: || (>= netcoreapp1.0) (>= uap10.0) + Microsoft.VisualStudio.Setup.Configuration.Interop (1.16.30) - restriction: >= net472 + Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (4.7) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Buffers (>= 4.5) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) - System.Security.AccessControl (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (4.7) - restriction: >= netcoreapp3.0 - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 - Mono.Cecil (0.11.2) - restriction: || (>= net461) (>= netstandard2.0) - NETStandard.Library (2.0.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp3.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) + Microsoft.Win32.Registry (5.0) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Security.AccessControl (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.SystemEvents (5.0) - restriction: >= netcoreapp3.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + Mono.Cecil (0.11.3) - restriction: || (>= net461) (>= netstandard2.0) + NETStandard.Library (2.0.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= wp8) - NetTopologySuite (2.0) - restriction: >= netcoreapp3.1 + NetTopologySuite (2.2) - restriction: >= netstandard2.0 System.Memory (>= 4.5.3) - restriction: >= netstandard2.0 - Newtonsoft.Json (12.0.3) - restriction: || (&& (>= net451) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (< netstandard1.6) (>= netstandard2.0)) (>= uap10.0) - Microsoft.CSharp (>= 4.3) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - System.ComponentModel.TypeConverter (>= 4.3) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - System.Runtime.Serialization.Formatters (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) (< netstandard2.0) - System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - System.Xml.XmlDocument (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) (< netstandard2.0) - NuGet.Frameworks (5.6) - restriction: || (&& (>= net451) (>= netcoreapp1.0) (>= uap10.0)) (&& (>= netcoreapp1.0) (>= netstandard2.0) (>= uap10.0)) (>= netcoreapp2.1) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.1) (< netcoreapp5.0)) (&& (>= netcoreapp5.0) (< netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.0)) + NetTopologySuite.IO.SqlServerBytes (2.0) + NetTopologySuite (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 + Newtonsoft.Json (12.0.3) - restriction: || (>= netcoreapp2.1) (>= uap10.0) + NuGet.Frameworks (5.9) - restriction: >= netcoreapp2.1 + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Http (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp5.0) (< netstandard2.0)) + runtime.native.System.Net.Http (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.native.System.Net.Security (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) @@ -285,53 +296,46 @@ NUGET runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - SQLitePCLRaw.bundle_e_sqlite3 (2.0.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.core (>= 2.0.3) - restriction: || (>= net461) (>= netstandard2.0) (>= xamarintvos) - SQLitePCLRaw.lib.e_sqlite3 (>= 2.0.3) - restriction: || (&& (< monoandroid8.0) (>= netstandard2.0) (< xamarinios)) (>= net461) (>= netcoreapp3.0) - SQLitePCLRaw.lib.e_sqlite3.android (>= 2.0.3) - restriction: >= monoandroid8.0 - SQLitePCLRaw.lib.e_sqlite3.ios (>= 2.0.3) - restriction: >= xamarinios - SQLitePCLRaw.provider.dynamic_cdecl (>= 2.0.3) - restriction: || (>= net461) (>= netcoreapp3.0) - SQLitePCLRaw.provider.e_sqlite3 (>= 2.0.3) - restriction: || (>= monoandroid8.0) (&& (< net461) (< netcoreapp3.0) (>= netstandard2.0) (< xamarinios)) - SQLitePCLRaw.provider.internal (>= 2.0.3) - restriction: || (>= xamarinios) (>= xamarintvos) - SQLitePCLRaw.core (2.0.3) - restriction: >= netstandard2.0 + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + SQLitePCLRaw.bundle_e_sqlite3 (2.0.4) - restriction: >= netstandard2.1 + SQLitePCLRaw.core (>= 2.0.4) - restriction: || (>= net461) (>= netstandard2.0) (>= xamarintvos) + SQLitePCLRaw.lib.e_sqlite3 (>= 2.0.4) - restriction: || (&& (< monoandroid8.0) (>= netstandard2.0) (< xamarinios)) (>= net461) (>= netcoreapp3.1) + SQLitePCLRaw.provider.dynamic_cdecl (>= 2.0.4) - restriction: || (>= net461) (>= netcoreapp3.1) + SQLitePCLRaw.provider.e_sqlite3 (>= 2.0.4) - restriction: || (>= monoandroid8.0) (&& (< net461) (< netcoreapp3.1) (>= netstandard2.0) (< xamarinios)) + SQLitePCLRaw.core (2.0.4) - restriction: >= netstandard2.1 System.Memory (>= 4.5.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.lib.e_sqlite3 (2.0.3) - restriction: || (&& (< monoandroid8.0) (>= netstandard2.0) (< xamarinios)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp3.0) - SQLitePCLRaw.lib.e_sqlite3.android (2.0.3) - restriction: >= monoandroid8.0 - SQLitePCLRaw.lib.e_sqlite3.ios (2.0.3) - restriction: >= xamarinios - SQLitePCLRaw.provider.dynamic_cdecl (2.0.3) - restriction: || (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp3.0) - SQLitePCLRaw.core (>= 2.0.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.provider.e_sqlite3 (2.0.3) - restriction: || (>= monoandroid8.0) (&& (< net461) (< netcoreapp3.0) (>= netstandard2.0) (< xamarinios)) - SQLitePCLRaw.core (>= 2.0.3) - SQLitePCLRaw.provider.internal (2.0.3) - restriction: || (&& (>= netstandard2.0) (>= xamarintvos)) (>= xamarinios) - SQLitePCLRaw.core (>= 2.0.3) - restriction: >= netstandard2.0 - System.Buffers (4.5.1) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= 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)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Collections.Immutable (1.7.1) - restriction: || (>= net461) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) + SQLitePCLRaw.lib.e_sqlite3 (2.0.4) - restriction: >= netstandard2.1 + SQLitePCLRaw.provider.dynamic_cdecl (2.0.4) - restriction: || (&& (>= net461) (>= netstandard2.1)) (>= netcoreapp3.1) + SQLitePCLRaw.core (>= 2.0.4) - restriction: >= netstandard2.0 + SQLitePCLRaw.provider.e_sqlite3 (2.0.4) - restriction: || (&& (>= monoandroid8.0) (>= netstandard2.1)) (&& (< netcoreapp3.1) (>= netstandard2.1)) + SQLitePCLRaw.core (>= 2.0.4) + System.Buffers (4.5.1) - restriction: || (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netstandard2.0) + System.CodeDom (5.0) - restriction: && (< net472) (>= netstandard2.0) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) + 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.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Collections.Immutable (5.0) - restriction: >= netstandard2.0 System.Collections.NonGeneric (4.3) - restriction: >= netcoreapp3.1 System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -348,72 +352,64 @@ NUGET System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.ComponentModel (4.3) - restriction: >= netcoreapp3.1 - 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)) (>= netcoreapp5.0) - System.ComponentModel.Annotations (4.7) - restriction: >= netcoreapp3.1 - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.4) (< netstandard2.0) (< uap10.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8)) (>= netcoreapp5.0) - System.ComponentModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.4) (< netstandard2.0) (< uap10.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8)) (>= netcoreapp5.0) + 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: >= netstandard2.1 System.ComponentModel.Primitives (4.3) - restriction: >= uap10.0 - System.ComponentModel.TypeConverter (4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< xamarinmac)) (>= netcoreapp2.1) (>= uap10.0) (>= xamarinios) + System.ComponentModel.TypeConverter (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= xamarinios)) (>= uap10.0) System.ComponentModel.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.5) (< win8)) (&& (>= net45) (< netstandard1.5)) (>= net462) (&& (< netstandard1.0) (>= win8)) (>= wp8) (>= wpa81) - System.Composition (1.4.1) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 1.4.1) - System.Composition.Convention (>= 1.4.1) - System.Composition.Hosting (>= 1.4.1) - System.Composition.Runtime (>= 1.4.1) - System.Composition.TypedParts (>= 1.4.1) - System.Composition.AttributedModel (1.4.1) - restriction: >= netstandard2.0 - System.Composition.Convention (1.4.1) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 1.4.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Hosting (1.4.1) - restriction: >= netstandard2.0 - System.Composition.Runtime (>= 1.4.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Runtime (1.4.1) - restriction: >= netstandard2.0 - System.Composition.TypedParts (1.4.1) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 1.4.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Hosting (>= 1.4.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Runtime (>= 1.4.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Configuration.ConfigurationManager (4.7) - restriction: >= netcoreapp2.1 - System.Security.Cryptography.ProtectedData (>= 4.7) - restriction: && (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Security.Permissions (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Console (4.3.1) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Contracts (4.3) - restriction: >= netcoreapp5.0 - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard2.0) (>= uap10.0)) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Diagnostics.DiagnosticSource (4.7.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (< netstandard1.6)) (&& (>= netcoreapp5.0) (< netstandard2.0)) - System.Diagnostics.Process (4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tools (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.TraceSource (4.3) - restriction: || (&& (< net461) (>= netstandard2.0)) (>= netcoreapp3.1) + System.Composition (5.0.1) - restriction: >= netstandard2.0 + System.Composition.AttributedModel (>= 5.0.1) + System.Composition.Convention (>= 5.0.1) + System.Composition.Hosting (>= 5.0.1) + System.Composition.Runtime (>= 5.0.1) + System.Composition.TypedParts (>= 5.0.1) + System.Composition.AttributedModel (5.0.1) - restriction: >= netstandard2.0 + System.Composition.Convention (5.0.1) - restriction: >= netstandard2.0 + System.Composition.AttributedModel (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) + System.Composition.Hosting (5.0.1) - restriction: >= netstandard2.0 + System.Composition.Runtime (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) + System.Composition.Runtime (5.0.1) - restriction: >= netstandard2.0 + System.Composition.TypedParts (5.0.1) - restriction: >= netstandard2.0 + System.Composition.AttributedModel (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) + System.Composition.Hosting (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) + System.Composition.Runtime (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) + System.Configuration.ConfigurationManager (5.0) - restriction: || (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) + 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.Diagnostics.DiagnosticSource (5.0.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netstandard2.1) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net45) (< netstandard1.3)) (>= net46) (>= uap10.1) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) (>= net46) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Process (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netstandard2.0) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tools (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + 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.Diagnostics.TraceSource (4.3) - restriction: >= netstandard2.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -423,52 +419,54 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (< netstandard2.0)) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Drawing.Common (4.7) - restriction: >= netcoreapp3.0 - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 - Microsoft.Win32.SystemEvents (>= 4.7) - restriction: >= netcoreapp2.0 - System.Dynamic.Runtime (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp3.1) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: >= netcoreapp5.0 - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< netcoreapp2.1) (>= netcoreapp5.0)) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 + Microsoft.Win32.SystemEvents (>= 5.0) - restriction: >= netcoreapp2.0 + System.Dynamic.Runtime (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) + 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.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp3.1) (&& (>= netcoreapp5.0) (< netstandard2.0)) + System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp3.1) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IdentityModel.Tokens.Jwt (6.6) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) - Microsoft.IdentityModel.JsonWebTokens (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Tokens (>= 6.6) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< net461) (>= net463) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< netcoreapp2.1) (>= netcoreapp5.0)) (&& (>= netcoreapp5.0) (< netstandard2.0)) + System.IdentityModel.Tokens.Jwt (6.9) - restriction: || (&& (>= net45) (< netstandard2.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + Microsoft.IdentityModel.JsonWebTokens (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + Microsoft.IdentityModel.Tokens (>= 6.9) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net463) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (< netstandard1.3) (>= netstandard2.1)) (&& (>= netstandard2.1) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + System.Runtime (>= 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)) + 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)) + 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)) + System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (< netstandard1.3)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (< netstandard1.3) (>= netstandard2.1)) (&& (>= netstandard2.1) (>= uap10.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -477,281 +475,285 @@ NUGET System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (< netstandard1.3)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (< netstandard1.3) (>= netstandard2.1)) (&& (>= netstandard2.1) (>= uap10.0)) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Queryable (4.3) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Memory (4.5.4) - restriction: || (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (>= uap10.0)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.0) (< netstandard2.1)) (&& (>= netcoreapp3.0) (>= uap10.1)) (>= netstandard2.0) + System.IO.Pipelines (5.0.1) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (>= net461) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard2.0)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard2.0)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Expressions (4.3) - restriction: >= netstandard2.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Queryable (4.3) - restriction: >= netstandard2.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Memory (4.5.4) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netstandard2.0) System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Numerics.Vectors (>= 4.4) - restriction: && (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Numerics.Vectors (>= 4.5) - restriction: >= net461 System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Net.Http (4.3.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp5.0) (< netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Net.NameResolution (4.3) - restriction: || (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Security.Principal.Windows (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.6) (< win8)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (< netstandard2.0)) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (>= netcoreapp5.0) - System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Net.Requests (4.3) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (>= netcoreapp5.0) - System.Net.Http (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (>= netcoreapp5.0) - System.Net.WebHeaderCollection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Net.WebHeaderCollection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp5.0) (< netstandard2.0)) + System.Net.Http (4.3.4) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Requests (4.3) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Net.WebHeaderCollection (>= 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)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Net.Security (4.3.2) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Security (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.6)) (>= net46) + System.Security.Principal (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Threading.ThreadPool (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Net.WebHeaderCollection (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Numerics.Vectors (4.5) - restriction: || (&& (< monoandroid) (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net451) (>= net461) (>= netstandard2.0)) - System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Private.DataContractSerialization (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: >= netcoreapp5.0 - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (>= netcoreapp5.0) - System.Xml.XmlSerializer (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Private.ServiceModel (4.7) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Reflection.DispatchProxy (>= 4.5) - restriction: >= netstandard2.0 - System.Security.Cryptography.Xml (>= 4.5) - restriction: >= netstandard2.0 - System.Security.Principal.Windows (>= 4.5) - restriction: >= netstandard2.0 - System.Private.Uri (4.3.2) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) + System.Numerics.Vectors (4.5) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp3.1) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Private.DataContractSerialization (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.RegularExpressions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.ReaderWriter (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.XDocument (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Xml.XmlSerializer (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Private.Uri (4.3.2) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< netcoreapp5.0) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.0) - System.Reflection.DispatchProxy (4.7.1) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Reflection.Emit (4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.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) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= netcoreapp5.0) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard1.6) (< netstandard2.0) (>= wpa81)) (&& (>= netstandard1.6) (< portable-net45+wp8) (>= win8)) (&& (>= netstandard1.6) (< portable-net45+wp8) (< win8)) (&& (>= netstandard1.6) (>= uap10.1)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.Lightweight (4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.1) (< netcoreapp5.0)) (&& (>= netcoreapp5.0) (< netstandard2.0)) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (< netstandard2.0)) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Metadata (1.8.1) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.Immutable (>= 1.7.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp3.1) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (>= net46) (>= netstandard2.0) (>= uap10.0)) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - System.Diagnostics.Contracts (>= 4.3) - restriction: >= netcoreapp5.0 - System.Diagnostics.Debug (>= 4.3) - restriction: >= netcoreapp5.0 - System.Linq (>= 4.3) - restriction: >= netcoreapp5.0 - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< uap10.0)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< net46) (>= net462) (>= netstandard2.0)) (&& (< net461) (>= net463) (>= netstandard2.0)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.3) - 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)) (>= netcoreapp5.0) - System.Runtime.Caching (4.7) - restriction: >= netcoreapp2.1 - System.Configuration.ConfigurationManager (>= 4.7) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Runtime.CompilerServices.Unsafe (4.7.1) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp3.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (>= netcoreapp3.0) (< netcoreapp3.1)) (>= netstandard2.0) - System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.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)) (>= netcoreapp5.0) - System.Runtime (>= 4.3.1) - 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)) (>= netcoreapp5.0) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< uap10.0)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + 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)) + 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)) + System.Runtime (>= 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)) + System.Reflection.Emit (4.7) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.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) (< xamarinios) (< xamarinmac)) (&& (< 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) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Reflection.Emit.Lightweight (4.7) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) + System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + 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.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.Reflection.Metadata (5.0) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) + 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.Reflection.TypeExtensions (4.7) - restriction: || (&& (>= net46) (>= netcoreapp3.1)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.0)) + System.Resources.Extensions (5.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) + 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.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)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (< netstandard1.3)) (&& (>= netcoreapp3.1) (< netstandard1.4)) (&& (>= netcoreapp3.1) (< netstandard1.6)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (&& (< netstandard1.3) (>= netstandard2.1)) (&& (< netstandard1.4) (>= netstandard2.1)) (&& (< netstandard1.6) (>= netstandard2.1)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) + Microsoft.NETCore.Platforms (>= 1.1.1) - 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 (>= 1.1.3) - 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)) + System.Runtime.Caching (5.0) - restriction: || (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) + System.Configuration.ConfigurationManager (>= 5.0) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net45) (< netstandard1.3) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (>= netcoreapp3.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< net5.0) (>= netcoreapp3.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netcoreapp3.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp1.1) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1.1) - 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.Targets (>= 1.1.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)) + System.Runtime (>= 4.3.1) - 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)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monoandroid9.0) (>= netcoreapp3.1)) (&& (>= monoandroid9.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) + System.Runtime.InteropServices (4.3) - restriction: || (&& (>= monoandroid9.0) (>= netcoreapp3.1)) (&& (>= monoandroid9.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) - System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (>= net45) (>= netstandard2.0)) (>= uap10.0) - System.Runtime.Loader (4.3) - restriction: && (< net461) (>= netstandard2.0) + System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: >= uap10.0 + System.Runtime.Loader (4.3) - restriction: >= netstandard2.0 System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< netcoreapp2.1) (>= netcoreapp5.0)) (&& (>= netcoreapp5.0) (< netstandard2.0)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Serialization.Formatters (4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) (>= xamarinios) + 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.Runtime.Serialization.Formatters (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.4)) (>= net46) - System.Runtime.Serialization.Json (4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.0)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Private.DataContractSerialization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinmac)) (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< xamarinmac)) (&& (< net45) (>= net46) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) (>= xamarinios) - System.Security.AccessControl (4.7) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 4.7) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< uap10.0)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netcoreapp5.0)) (&& (>= netcoreapp5.0) (< netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) (>= netcoreapp5.0) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Security.Cryptography.Cng (4.7) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (>= netcoreapp2.0) (>= uap10.0)) (&& (>= netcoreapp2.1) (>= uap10.0)) (&& (< netcoreapp2.1) (>= netcoreapp5.0)) (&& (>= netcoreapp3.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) - System.Security.Cryptography.Csp (4.3) - restriction: && (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< uap10.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net461) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) + System.Runtime.Serialization.Json (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Private.DataContractSerialization (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) + 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Security.AccessControl (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< net472) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Claims (4.3) - restriction: >= netstandard2.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= net45) (< netstandard2.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.0) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net463) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -764,24 +766,15 @@ NUGET System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.OpenSsl (4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp5.0) (< netstandard2.0)) - System.Collections (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.IO (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Resources.ResourceManager (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Runtime (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Runtime.Extensions (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Runtime.Handles (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Runtime.InteropServices (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Runtime.Numerics (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Text.Encoding (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) - System.Security.Cryptography.Pkcs (4.7) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Buffers (>= 4.5) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) - System.Memory (>= 4.5.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) - System.Security.Cryptography.Cng (>= 4.7) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.0) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net461) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) + System.Security.Cryptography.OpenSsl (5.0) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) + System.Formats.Asn1 (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.0) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monoandroid9.0) (>= netcoreapp3.1)) (&& (>= monoandroid9.0) (>= netstandard2.1)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net46) (>= netstandard2.1)) (&& (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net463) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -789,42 +782,44 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.ProtectedData (4.7) - restriction: >= netcoreapp2.1 - System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net46) (>= netstandard1.6) (< netstandard2.0)) (&& (>= netcoreapp5.0) (< netstandard1.6)) (&& (>= netcoreapp5.0) (< netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp5.0) - System.Security.Cryptography.Cng (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp5.0) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Security.Cryptography.Xml (4.7) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net461) (>= netstandard2.0) - System.Security.Permissions (>= 4.7) - restriction: || (>= net461) (>= netstandard2.0) - System.Security.Permissions (4.7) - restriction: || (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.0)) - System.Security.AccessControl (>= 4.7) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 4.7) - restriction: >= netcoreapp3.0 - System.Security.Principal.Windows (4.7) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Security.SecureString (4.3) - restriction: || (>= monoandroid9.0) (&& (< net45) (>= netstandard2.0) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.0)) (>= xamarinios) + System.Security.Cryptography.ProtectedData (5.0) - restriction: >= netcoreapp3.1 + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.0)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Calendars (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Xml (5.0) - restriction: && (< net472) (>= netstandard2.0) + System.Memory (>= 4.5.4) - restriction: && (< monoandroid) (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp3.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Principal (4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + System.Security.SecureString (4.3) - restriction: || (&& (>= monoandroid9.0) (>= netcoreapp3.1)) (&& (>= monoandroid9.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netcoreapp3.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -833,90 +828,90 @@ NUGET System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ServiceModel.Http (4.7) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Private.ServiceModel (>= 4.7) - restriction: && (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.ServiceModel.Primitives (>= 4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) - System.ServiceModel.NetTcp (4.7) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Private.ServiceModel (>= 4.7) - restriction: && (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.ServiceModel.Primitives (>= 4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) - System.ServiceModel.Primitives (4.7) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Private.ServiceModel (>= 4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.1) (< netcoreapp5.0)) - System.ServiceModel.Security (4.7) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Private.ServiceModel (>= 4.7) - restriction: && (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.ServiceModel.Primitives (>= 4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard2.0) (>= uap10.0)) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Text.Encoding.CodePages (4.7.1) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 3.1.1) - restriction: >= netcoreapp2.0 - System.Runtime.CompilerServices.Unsafe (>= 4.7.1) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp3.1)) - System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Text.Encodings.Web (4.7.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net451) (>= net461) (>= netstandard2.0)) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp3.0) (< netcoreapp3.1)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Memory (>= 4.5.4) - restriction: || (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (>= net461) (>= uap10.1) - System.Text.Json (4.7.2) - restriction: && (< net451) (>= netstandard2.0) - Microsoft.Bcl.AsyncInterfaces (>= 1.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monoandroid9.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) + 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 (5.0) - restriction: || (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netstandard2.0) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (< net5.0) (>= netcoreapp2.0)) + System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + 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 (>= 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.Encodings.Web (5.0.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< net5.0) (>= netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0) (>= netstandard2.1)) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + System.Text.Json (5.0.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (< net5.0) (>= netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) System.Numerics.Vectors (>= 4.5) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) - System.Runtime.CompilerServices.Unsafe (>= 4.7.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp3.0) (< netcoreapp3.1)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Text.Encodings.Web (>= 4.7.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp3.0) (< netcoreapp3.1)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Text.Encodings.Web (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) - System.Text.RegularExpressions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) + System.Text.RegularExpressions (4.3.1) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp1.1) - System.Runtime.Extensions (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - 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)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= netstandard2.0) - System.Threading.Tasks.Parallel (4.3) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Threading.Thread (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Timer (4.3) - restriction: && (< net45) (>= netstandard1.6) (< netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.ValueTuple (4.5) - restriction: >= net461 - System.Windows.Extensions (4.7) - restriction: >= netcoreapp3.0 - System.Drawing.Common (>= 4.7) - restriction: >= netcoreapp3.0 - System.Xml.ReaderWriter (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard2.0) (>= uap10.0)) - System.Xml.XDocument (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Xml.XmlDocument (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinmac)) (&& (< monoandroid9.0) (< net45) (>= netstandard2.0) (< uap10.0) (< xamarinmac)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (>= net46) (>= netstandard2.0) (>= uap10.0)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard2.0) (>= uap10.0)) (>= xamarinios) + System.Runtime.Extensions (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monoandroid9.0) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= xamarinios)) + 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 (>= 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 (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + 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.Dataflow (5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= xamarinios)) (&& (>= netstandard2.1) (>= xamarinmac)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + System.Threading.Tasks.Parallel (4.3) - restriction: >= netstandard2.0 + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Threading.Thread (4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 + System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 + System.Xml.ReaderWriter (4.3.1) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (< netstandard1.3) (>= netstandard2.1)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 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.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.RegularExpressions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 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.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.XDocument (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tools (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Reflection (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Xml.XmlDocument (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) (&& (>= netstandard2.1) (>= xamarinios)) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -927,156 +922,25 @@ NUGET System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Xml.ReaderWriter (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Xml.XmlSerializer (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.1) (&& (>= netcoreapp5.0) (>= uap10.0)) (&& (>= netstandard2.0) (>= uap10.0) (< win8) (< wpa81)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Xamarin.Android.Arch.Core.Common (1.1.1.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid8.0 - Xamarin.Android.Arch.Core.Runtime (1.1.1.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Arch.Core.Common (1.1.1.3) - restriction: >= monoandroid8.1 - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid8.1 - Xamarin.Android.Arch.Lifecycle.Common (1.1.1.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid8.0 - Xamarin.Android.Arch.Lifecycle.LiveData (1.1.1.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Arch.Core.Common (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Arch.Core.Runtime (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Arch.Lifecycle.LiveData.Core (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Arch.Lifecycle.LiveData.Core (1.1.1.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Arch.Core.Common (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Arch.Core.Runtime (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Arch.Lifecycle.Common (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Arch.Lifecycle.Runtime (1.1.1.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Arch.Core.Common (1.1.1.3) - restriction: >= monoandroid8.0 - Xamarin.Android.Arch.Lifecycle.Common (1.1.1.3) - restriction: >= monoandroid8.0 - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid8.0 - Xamarin.Android.Arch.Lifecycle.ViewModel (1.1.1.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.AsyncLayoutInflater (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Collections (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Arch.Lifecycle.Runtime (1.1.1.3) - restriction: >= monoandroid8.0 - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid7.1 - Xamarin.Android.Support.Collections (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.VersionedParcelable (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CoordinaterLayout (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CustomView (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Core.UI (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.AsyncLayoutInflater (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid7.0 - Xamarin.Android.Support.CoordinaterLayout (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Core.Utils (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CursorAdapter (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CustomView (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.DrawerLayout (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Interpolator (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.SlidingPaneLayout (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.SwipeRefreshLayout (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.ViewPager (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Core.Utils (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid7.0 - Xamarin.Android.Support.DocumentFile (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Loader (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.LocalBroadcastManager (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Print (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CursorAdapter (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CustomTabs (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Collections (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid7.0 - Xamarin.Android.Support.Core.UI (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Interpolator (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CustomView (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.DocumentFile (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.DrawerLayout (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CustomView (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Interpolator (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Loader (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Arch.Lifecycle.LiveData (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Arch.Lifecycle.ViewModel (1.1.1.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.LocalBroadcastManager (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Print (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.SlidingPaneLayout (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CustomView (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.SwipeRefreshLayout (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Interpolator (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.VersionedParcelable (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Collections (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.ViewPager (28.0.0.3) - restriction: && (< monoandroid10.0) (>= monoandroid9.0) - Xamarin.Android.Support.Annotations (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.Compat (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.Android.Support.CustomView (28.0.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Annotation (1.1.0.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Migration (>= 1.0.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Arch.Core.Common (2.1.0.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Annotation (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Browser (1.2.0.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Annotation (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Core (>= 1.2.0.1) - restriction: >= monoandroid9.0 - Xamarin.Google.Guava.ListenableFuture (>= 1.0.0.2) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Collection (1.1.0.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Annotation (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Core (1.2.0.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Annotation (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Runtime (>= 2.2.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.VersionedParcelable (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Common (2.2.0.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Annotation (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Runtime (2.2.0.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Annotation (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Arch.Core.Common (>= 2.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Common (>= 2.2.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Migration (1.0.6.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.MultiDex (>= 2.0.1.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.MultiDex (2.0.1.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.VersionedParcelable (1.1.1.1) - restriction: >= monoandroid10.0 - Xamarin.AndroidX.Annotation (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Collection (>= 1.1.0.1) - restriction: >= monoandroid9.0 - Xamarin.Google.Guava.ListenableFuture (1.0.0.2) - restriction: >= monoandroid10.0 - xunit (2.4.1) - restriction: >= netcoreapp3.1 - xunit.analyzers (>= 0.10) - xunit.assert (2.4.1) - xunit.core (2.4.1) + System.Xml.XmlSerializer (4.3) - restriction: || (&& (>= net46) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (&& (>= netcoreapp3.1) (>= uap10.0)) (&& (>= netstandard2.1) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.RegularExpressions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Xml.XmlDocument (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) xunit.abstractions (2.0.3) - restriction: >= netcoreapp3.1 - xunit.analyzers (0.10) - restriction: >= netcoreapp3.1 xunit.assert (2.4.1) - restriction: >= netcoreapp3.1 NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) xunit.core (2.4.1) - restriction: >= netcoreapp3.1 @@ -1088,155 +952,536 @@ NUGET xunit.extensibility.execution (2.4.1) - restriction: >= netcoreapp3.1 NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) xunit.extensibility.core (2.4.1) - restriction: >= netstandard1.1 - YoloDev.Expecto.TestSdk (0.8) - Expecto (>= 8.10 < 9.0) - restriction: || (>= net461) (>= netcoreapp2.0) - FSharp.Core (>= 4.3.4) - restriction: || (>= net461) (>= netcoreapp2.0) - System.Collections.Immutable (>= 1.4) - restriction: || (>= net461) (>= netcoreapp2.0) - System.ValueTuple (>= 4.4) - restriction: >= net461 + YoloDev.Expecto.TestSdk (0.11.1) + Expecto (>= 9.0 < 10.0) - restriction: >= netcoreapp2.1 + FSharp.Core (>= 4.6) - restriction: >= netcoreapp2.1 + System.Collections.Immutable (>= 1.5 < 5.1) - restriction: >= netcoreapp2.1 GROUP Analyzers NUGET remote: https://www.nuget.org/api/v2 - BinaryDefense.FSharp.Analyzers.Hashing (0.1) - FSharp.Analyzers.SDK (>= 0.4) - restriction: >= netcoreapp2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netcoreapp2.0 - FSharp.Analyzers.SDK (0.4.1) - restriction: >= netcoreapp2.0 - FSharp.Compiler.Service (>= 35.0) - restriction: >= netcoreapp2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netcoreapp2.0 - McMaster.NETCore.Plugins (>= 1.2) - restriction: >= netcoreapp2.0 - FSharp.Compiler.Service (36.0.3) - restriction: >= netcoreapp2.0 - FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) - System.Buffers (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Memory (>= 4.5.3) - restriction: || (>= net461) (>= netstandard2.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Reflection.Metadata (>= 1.6) - restriction: || (>= net461) (>= netstandard2.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Runtime.Loader (>= 4.0) - restriction: && (< net461) (>= netstandard2.0) - FSharp.Core (4.7.2) - restriction: >= netcoreapp2.0 - McMaster.NETCore.Plugins (1.3) - restriction: >= netcoreapp2.0 + BinaryDefense.FSharp.Analyzers.Hashing (0.2.1) + FSharp.Analyzers.SDK (>= 0.7) - restriction: >= net5.0 + FSharp.Core (>= 5.0) - restriction: >= net5.0 + FSharp.Analyzers.SDK (0.8) - restriction: >= net5.0 + FSharp.Compiler.Service (>= 39.0) - restriction: >= net5.0 + FSharp.Core (>= 5.0.1) - restriction: >= net5.0 + McMaster.NETCore.Plugins (>= 1.3.1) - restriction: >= net5.0 + FSharp.Compiler.Service (39.0) - restriction: >= net5.0 + FSharp.Core (5.0.1) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Core (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.6) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Diagnostics.Process (>= 4.3) - restriction: >= netstandard2.0 + System.Diagnostics.TraceSource (>= 4.3) - restriction: >= netstandard2.0 + System.Linq.Expressions (>= 4.3) - restriction: >= netstandard2.0 + System.Linq.Queryable (>= 4.3) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 + System.Net.Requests (>= 4.3) - restriction: >= netstandard2.0 + System.Net.Security (>= 4.3) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.3) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 5.0) - restriction: >= netstandard2.0 + System.Reflection.TypeExtensions (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.InteropServices (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.Loader (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Claims (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Principal (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.Tasks.Parallel (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.Thread (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.ThreadPool (>= 4.3) - restriction: >= netstandard2.0 + FSharp.Core (5.0.1) - restriction: >= net5.0 + McMaster.NETCore.Plugins (1.3.1) - restriction: >= net5.0 Microsoft.DotNet.PlatformAbstractions (>= 3.1) - restriction: >= netcoreapp2.0 Microsoft.Extensions.DependencyModel (>= 3.1) - restriction: >= netcoreapp2.0 - System.Text.Json (>= 4.7) - restriction: && (>= netcoreapp2.0) (< netcoreapp3.0) - Microsoft.Bcl.AsyncInterfaces (1.1.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.0) (>= xamarinios)) (&& (>= netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp2.0) (>= xamarintvos)) (&& (>= netcoreapp2.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0)) (>= netstandard2.1) - Microsoft.DotNet.PlatformAbstractions (3.1.5) - restriction: >= netcoreapp2.0 - Microsoft.Extensions.DependencyModel (3.1.5) - restriction: >= netcoreapp2.0 - System.Text.Json (>= 4.7.2) - restriction: && (< net451) (>= netstandard2.0) - Microsoft.NETCore.Platforms (3.1.1) - restriction: || (&& (>= netcoreapp2.0) (< netstandard1.2)) (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard1.5)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (3.1) - restriction: || (&& (>= netcoreapp2.0) (< netstandard1.2)) (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard1.5)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) - System.Buffers (4.5.1) - restriction: >= netcoreapp2.0 - System.Collections (4.3) - restriction: >= netcoreapp5.0 - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Collections.Immutable (1.7.1) - restriction: >= netcoreapp2.0 - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) - System.Diagnostics.Contracts (4.3) - restriction: >= netcoreapp5.0 - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (4.3) - restriction: >= netcoreapp5.0 - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Globalization (4.3) - restriction: || (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.IO (4.3) - restriction: >= netcoreapp2.0 - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Linq (4.3) - restriction: >= netcoreapp5.0 - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Memory (4.5.4) - restriction: >= netcoreapp2.0 - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Reflection (4.3) - restriction: >= netcoreapp2.0 - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.0) - System.Reflection.Emit (4.7) - restriction: >= netcoreapp2.0 - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.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) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= netcoreapp5.0) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (>= netcoreapp2.0) (< netstandard1.1)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netcoreapp2.0) (>= uap10.1)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Metadata (1.8.1) - restriction: >= netcoreapp2.0 - System.Collections.Immutable (>= 1.7.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp3.1) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (4.7) - restriction: >= netcoreapp2.0 - System.Diagnostics.Contracts (>= 4.3) - restriction: >= netcoreapp5.0 - System.Diagnostics.Debug (>= 4.3) - restriction: >= netcoreapp5.0 - System.Linq (>= 4.3) - restriction: >= netcoreapp5.0 - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.ResourceManager (4.3) - restriction: || (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (4.3.1) - restriction: >= netcoreapp2.0 - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.3) - 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)) (>= netcoreapp5.0) - System.Runtime.CompilerServices.Unsafe (4.7.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netstandard1.1)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.0) (>= xamarinios)) (&& (>= netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp2.0) (>= xamarintvos)) (&& (>= netcoreapp2.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Runtime.Extensions (4.3.1) - restriction: >= netcoreapp5.0 - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.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)) (>= netcoreapp5.0) - System.Runtime (>= 4.3.1) - 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)) (>= netcoreapp5.0) - System.Runtime.Handles (4.3) - restriction: || (&& (>= netcoreapp2.0) (< netstandard1.5)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) + Microsoft.Build.Framework (16.9) - restriction: >= net5.0 + System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.Build.Tasks.Core (16.9) - restriction: >= net5.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) + System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net472) (>= netstandard2.0) + System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 + System.Runtime.InteropServices (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (16.9) - restriction: >= net5.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.DotNet.PlatformAbstractions (3.1.6) - restriction: >= net5.0 + Microsoft.Extensions.DependencyModel (5.0) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (5.0.1) - restriction: >= net5.0 + Microsoft.NETCore.Targets (5.0) - restriction: >= net5.0 + Microsoft.Win32.Primitives (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (5.0) - restriction: >= net5.0 + System.Security.AccessControl (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.SystemEvents (5.0) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.native.System (4.3.1) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Net.Http (4.3.1) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Net.Security (4.3.1) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: >= net5.0 + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: >= net5.0 + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: >= net5.0 + System.Buffers (4.5.1) - restriction: >= net5.0 + System.CodeDom (5.0) - restriction: >= net5.0 + System.Collections (4.3) - restriction: >= net5.0 + 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.Collections.Concurrent (4.3) - restriction: >= net5.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Collections.Immutable (5.0) - restriction: >= net5.0 + System.Diagnostics.Debug (4.3) - restriction: >= net5.0 + 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.Diagnostics.DiagnosticSource (5.0.1) - restriction: >= net5.0 + System.Diagnostics.Process (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.TraceSource (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Drawing.Common (5.0.2) - restriction: >= net5.0 + Microsoft.Win32.SystemEvents (>= 5.0) - restriction: >= netcoreapp2.0 + System.Formats.Asn1 (5.0) - restriction: >= net5.0 + System.Globalization (4.3) - restriction: >= net5.0 + 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.Globalization.Calendars (4.3) - restriction: >= net5.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) + System.Globalization.Extensions (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + System.Runtime (>= 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)) + 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)) + 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)) + System.IO.FileSystem (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (4.3) - restriction: >= net5.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (4.3) - restriction: >= net5.0 + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Expressions (4.3) - restriction: >= net5.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Queryable (4.3) - restriction: >= net5.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Memory (4.5.4) - restriction: >= net5.0 + System.Net.Http (4.3.4) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Net.Primitives (4.3.1) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Requests (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Net.WebHeaderCollection (>= 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)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Net.Security (4.3.2) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Security (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.6)) (>= net46) + System.Security.Principal (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Threading.ThreadPool (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Net.WebHeaderCollection (4.3) - restriction: >= net5.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ObjectModel (4.3) - restriction: >= net5.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + 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)) + 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)) + System.Runtime (>= 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)) + System.Reflection.Emit (4.7) - restriction: >= net5.0 + System.Reflection.Emit.ILGeneration (4.7) - restriction: >= net5.0 + System.Reflection.Emit.Lightweight (4.7) - restriction: >= net5.0 + System.Reflection.Extensions (4.3) - restriction: >= net5.0 + 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.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.Reflection.Metadata (5.0) - restriction: >= net5.0 + System.Reflection.Primitives (4.3) - restriction: >= net5.0 + 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.Reflection.TypeExtensions (4.7) - restriction: >= net5.0 + System.Resources.Extensions (5.0) - restriction: >= net5.0 + System.Resources.ResourceManager (4.3) - restriction: >= net5.0 + 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: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1.1) - 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 (>= 1.1.3) - 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)) + System.Runtime.Extensions (4.3.1) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1.1) - 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.Targets (>= 1.1.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)) + System.Runtime (>= 4.3.1) - 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)) + System.Runtime.Handles (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (4.3) - restriction: >= net5.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) - System.Runtime.Loader (4.3) - restriction: >= netcoreapp2.0 + System.Runtime.Loader (4.3) - restriction: >= net5.0 System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (4.3) - restriction: || (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard1.5)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Text.Encodings.Web (4.7.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.0) (>= xamarinios)) (&& (>= netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp2.0) (>= xamarintvos)) (&& (>= netcoreapp2.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Memory (>= 4.5.4) - restriction: || (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (>= net461) (>= uap10.1) - System.Text.Json (4.7.2) - restriction: >= netcoreapp2.0 - Microsoft.Bcl.AsyncInterfaces (>= 1.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) - System.Runtime.CompilerServices.Unsafe (>= 4.7.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp3.0) (< netcoreapp3.1)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Text.Encodings.Web (>= 4.7.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp3.0) (< netcoreapp3.1)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) - System.Threading.Tasks (4.3) - restriction: || (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard1.5)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (>= uap10.1)) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + System.Runtime.Numerics (4.3) - restriction: >= net5.0 + 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.AccessControl (5.0) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Claims (4.3) - restriction: >= net5.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Cng (5.0) - restriction: >= net5.0 + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Csp (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (4.3) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.OpenSsl (5.0) - restriction: >= net5.0 + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Pkcs (5.0.1) - restriction: >= net5.0 + System.Formats.Asn1 (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.0) + System.Security.Cryptography.Primitives (4.3) - restriction: >= net5.0 + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Calendars (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Xml (5.0) - restriction: >= net5.0 + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (5.0) - restriction: >= net5.0 + System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Principal (4.3) - restriction: >= net5.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal.Windows (5.0) - restriction: >= net5.0 + System.Text.Encoding (4.3) - restriction: >= net5.0 + 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 (5.0) - restriction: >= net5.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Text.Encoding.Extensions (4.3) - restriction: >= net5.0 + 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 (>= 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 (4.3) - restriction: >= net5.0 + 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 (>= 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 (4.3) - restriction: >= net5.0 + 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.Dataflow (5.0) - restriction: >= net5.0 + System.Threading.Tasks.Parallel (4.3) - restriction: >= net5.0 + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Threading.Thread (4.3) - restriction: >= net5.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (4.3) - restriction: >= net5.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Windows.Extensions (5.0) - restriction: >= net5.0 + System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 GROUP Build STORAGE: NONE @@ -1249,311 +1494,371 @@ NUGET 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 (5.20.1) - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Octokit (>= 0.47) - restriction: >= netstandard2.0 - Fake.BuildServer.AppVeyor (5.20.1) - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Net.Http (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.BuildServer.Travis (5.20.1) - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.CommandLineParsing (5.20.1) - restriction: >= netstandard2.0 + Fake.Api.GitHub (5.20.4-alpha.1642) + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Octokit (>= 0.48) - restriction: >= netstandard2.0 + Fake.BuildServer.AppVeyor (5.20.4-alpha.1642) + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Net.Http (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.BuildServer.Travis (5.20.4-alpha.1642) + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.CommandLineParsing (5.20.4-alpha.1642) - restriction: >= netstandard2.0 FParsec (>= 1.1.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Context (5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (5.20.1) - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Process (5.20.1) - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 1.7) - restriction: >= netstandard2.0 - Fake.Core.ReleaseNotes (5.20.1) - Fake.Core.SemVer (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.SemVer (5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.String (5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Target (5.20.1) - Fake.Core.CommandLineParsing (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Control.Reactive (>= 4.2) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Tasks (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Xml (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.DotNet.AssemblyInfoFile (5.20.1) - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (5.20.1) - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Context (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Environment (5.20.4-alpha.1642) + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Process (5.20.4-alpha.1642) + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 1.7.1) - restriction: >= netstandard2.0 + Fake.Core.ReleaseNotes (5.20.4-alpha.1642) + Fake.Core.SemVer (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.SemVer (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.String (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Target (5.20.4-alpha.1642) + Fake.Core.CommandLineParsing (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Control.Reactive (>= 4.4.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Tasks (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Trace (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Xml (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.DotNet.AssemblyInfoFile (5.20.4-alpha.1642) + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (5.20.4-alpha.1642) + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Mono.Posix.NETStandard (>= 1.0) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (5.20.1) - restriction: >= netstandard2.0 - BlackFox.VsWhere (>= 1.0) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (>= 2.1.117) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Tasks (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Xml (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Net.Http (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + BlackFox.VsWhere (>= 1.1) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (>= 2.1.176) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Tasks (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Xml (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Net.Http (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - NuGet.Protocol (>= 5.5.1) - restriction: >= netstandard2.0 - Fake.DotNet.Paket (5.20.1) - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (5.20.1) - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Net.Http (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Tools.Git (5.20.1) - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fantomas (3.3) - FSharp.Compiler.Service (>= 34.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 + NuGet.Protocol (>= 5.6) - restriction: >= netstandard2.0 + Fake.DotNet.Paket (5.20.4-alpha.1642) + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (5.20.4-alpha.1642) + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Net.Http (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Tools.Git (5.20.4-alpha.1642) + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fantomas (3.2) + FSharp.Compiler.Service (>= 33.0) - 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.Compiler.Service (36.0.3) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) - System.Buffers (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Memory (>= 4.5.3) - restriction: || (>= net461) (>= netstandard2.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Reflection.Metadata (>= 1.6) - restriction: || (>= net461) (>= netstandard2.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Runtime.Loader (>= 4.0) - restriction: && (< net461) (>= netstandard2.0) - System.ValueTuple (>= 4.4) - restriction: >= net461 - FSharp.Control.Reactive (4.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7) - restriction: || (>= net46) (>= netstandard2.0) - System.Reactive (>= 4.3.2) - restriction: || (>= net46) (>= netstandard2.0) - FSharp.Core (4.7.2) - restriction: >= netstandard2.0 - Microsoft.Build (16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.6) - restriction: || (>= net472) (>= netcoreapp2.1) + FSharp.Compiler.Service (39.0) - restriction: >= netstandard2.0 + FSharp.Core (5.0.1) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Core (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.6) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Diagnostics.Process (>= 4.3) - restriction: >= netstandard2.0 + System.Diagnostics.TraceSource (>= 4.3) - restriction: >= netstandard2.0 + System.Linq.Expressions (>= 4.3) - restriction: >= netstandard2.0 + System.Linq.Queryable (>= 4.3) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 + System.Net.Requests (>= 4.3) - restriction: >= netstandard2.0 + System.Net.Security (>= 4.3) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.3) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 5.0) - restriction: >= netstandard2.0 + System.Reflection.TypeExtensions (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.InteropServices (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.Loader (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Claims (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: >= netstandard2.0 + System.Security.Principal (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.Tasks.Parallel (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.Thread (>= 4.3) - restriction: >= netstandard2.0 + System.Threading.ThreadPool (>= 4.3) - restriction: >= netstandard2.0 + FSharp.Control.Reactive (5.0.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + System.Reactive (>= 5.0) - restriction: >= netstandard2.0 + FSharp.Core (5.0.1) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Build (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: || (>= net472) (>= netcoreapp2.1) Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: >= netcoreapp2.1 - System.Collections.Immutable (>= 1.5) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Memory (>= 4.5.3) - restriction: || (>= net472) (>= netcoreapp2.1) + System.Collections.Immutable (>= 5.0) - restriction: || (>= net472) (>= netcoreapp2.1) + System.Memory (>= 4.5.4) - restriction: || (>= net472) (>= netcoreapp2.1) System.Reflection.Metadata (>= 1.6) - restriction: >= netcoreapp2.1 System.Security.Principal.Windows (>= 4.7) - restriction: >= netcoreapp2.1 System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= netcoreapp2.1 + System.Text.Json (>= 4.7) - restriction: || (>= net472) (>= netcoreapp2.1) System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.Build.Framework (16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (16.9) - restriction: >= netstandard2.0 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Core (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.9) - restriction: >= netstandard2.0 Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net472) (>= netstandard2.0) System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 + System.Runtime.InteropServices (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.NETCore.Platforms (3.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - Microsoft.NETCore.Targets (3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) + Microsoft.NETCore.Platforms (5.0.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monotouch) (>= netcoreapp2.1)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) Microsoft.VisualStudio.Setup.Configuration.Interop (1.16.30) - restriction: >= net472 - Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (4.7) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Buffers (>= 4.5) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) - System.Security.AccessControl (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (4.7) - restriction: >= netcoreapp3.0 - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 + Microsoft.Win32.Registry (5.0) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Security.AccessControl (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.SystemEvents (5.0) - restriction: >= netcoreapp3.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (2.1.133) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (2.1.303) - restriction: >= netstandard2.0 Microsoft.Build (>= 16.4) - restriction: >= netstandard2.0 Microsoft.Build.Framework (>= 16.4) - restriction: >= netstandard2.0 Microsoft.Build.Tasks.Core (>= 16.4) - restriction: >= netstandard2.0 Microsoft.Build.Utilities.Core (>= 16.4) - restriction: >= netstandard2.0 - System.IO.Compression (>= 4.3) - restriction: >= netstandard2.0 Newtonsoft.Json (12.0.3) - restriction: >= netstandard2.0 - NuGet.Common (5.6) - restriction: >= netstandard2.0 - NuGet.Frameworks (>= 5.6) - restriction: >= netstandard2.0 - System.Diagnostics.Process (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Threading.Thread (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Configuration (5.6) - restriction: >= netstandard2.0 - NuGet.Common (>= 5.6) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Frameworks (5.6) - restriction: >= netstandard2.0 - NuGet.Packaging (5.6) - restriction: >= netstandard2.0 + NuGet.Common (5.9) - restriction: >= netstandard2.0 + NuGet.Frameworks (>= 5.9) - restriction: || (>= net45) (>= netstandard2.0) + NuGet.Configuration (5.9) - restriction: >= netstandard2.0 + NuGet.Common (>= 5.9) - restriction: || (>= net45) (>= netstandard2.0) + System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net45) (>= netstandard2.0) + NuGet.Frameworks (5.9) - restriction: >= netstandard2.0 + NuGet.Packaging (5.9) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 9.0.1) - restriction: >= netstandard2.0 - NuGet.Configuration (>= 5.6) - restriction: >= netstandard2.0 - NuGet.Versioning (>= 5.6) - restriction: >= netstandard2.0 - System.Dynamic.Runtime (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Protocol (5.6) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 5.6) - restriction: >= netstandard2.0 - System.Dynamic.Runtime (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Versioning (5.6) - restriction: >= netstandard2.0 - Octokit (0.48) - restriction: >= netstandard2.0 - runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + NuGet.Configuration (>= 5.9) - restriction: >= netstandard2.0 + NuGet.Versioning (>= 5.9) - restriction: >= netstandard2.0 + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + NuGet.Protocol (5.9) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 5.9) - restriction: >= netstandard2.0 + NuGet.Versioning (5.9) - restriction: >= netstandard2.0 + Octokit (0.50) - restriction: >= netstandard2.0 + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.IO.Compression (4.3.2) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) + runtime.native.System.Net.Http (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - System.Buffers (4.5.1) - restriction: || (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (>= netstandard2.0) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - System.CodeDom (4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Collections.Immutable (1.7.1) - restriction: >= netstandard2.0 + runtime.native.System.Net.Security (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net5.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) (>= netstandard2.0) + System.CodeDom (5.0) - restriction: && (< net472) (>= netstandard2.0) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Collections.Immutable (5.0) - restriction: >= netstandard2.0 System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) - System.ComponentModel (4.3) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Configuration.ConfigurationManager (4.7) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 4.7) - restriction: && (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Security.Permissions (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Diagnostics.Contracts (4.3) - restriction: >= netcoreapp5.0 - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Diagnostics.Process (4.3) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Drawing.Common (4.7) - restriction: >= netcoreapp3.0 - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 - Microsoft.Win32.SystemEvents (>= 4.7) - restriction: >= netcoreapp2.0 - System.Dynamic.Runtime (4.3) - restriction: || (&& (< net472) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.0)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: >= netcoreapp5.0 - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.IO.Compression (4.3) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Buffers (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO.FileSystem (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Configuration.ConfigurationManager (5.0) - restriction: >= netstandard2.0 + System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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.Diagnostics.DiagnosticSource (5.0.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net45) (< netstandard1.3)) (>= net46) (>= uap10.1) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) (>= net46) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Process (4.3) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.TraceSource (4.3) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 + Microsoft.Win32.SystemEvents (>= 5.0) - restriction: >= netcoreapp2.0 + System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (>= net5.0)) (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= net5.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= net5.0) (< netcoreapp2.0)) (&& (>= net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= net5.0) (>= uap10.1)) (&& (>= net5.0) (>= xamarintvos)) (&& (>= net5.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= net463) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + System.Runtime (>= 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)) + 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)) + 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)) + System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1562,170 +1867,360 @@ NUGET System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.IO.FileSystem.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Queryable (4.3) - restriction: && (>= netstandard2.0) (>= uap10.0) - System.Memory (4.5.4) - restriction: >= netstandard2.0 + System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Expressions (4.3) - restriction: >= netstandard2.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Queryable (4.3) - restriction: >= netstandard2.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Memory (4.5.4) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net5.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (>= net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= net5.0) (>= uap10.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) (>= netstandard2.0) System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Numerics.Vectors (>= 4.4) - restriction: && (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) System.Numerics.Vectors (>= 4.5) - restriction: >= net461 System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Numerics.Vectors (4.5) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net461) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) - System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reactive (4.4.1) - restriction: >= netstandard2.0 - System.ComponentModel (>= 4.0.1) - restriction: && (>= uap10.0) (< uap10.1) - System.Dynamic.Runtime (>= 4.0.11) - restriction: && (>= uap10.0) (< uap10.1) - System.Linq.Queryable (>= 4.0.1) - restriction: && (>= uap10.0) (< uap10.1) - System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: && (< net46) (< netcoreapp3.0) (>= netstandard2.0) (< uap10.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net46) (&& (< netcoreapp3.0) (>= netstandard2.0)) (>= uap10.0) - System.ValueTuple (>= 4.5) - restriction: || (>= net46) (&& (>= uap10.0) (< uap10.1)) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.0) - System.Reflection.Emit (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= netstandard2.0)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.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) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= netcoreapp5.0) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (>= netcoreapp5.0) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< portable-net45+wp8) (< win8)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.Lightweight (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Metadata (1.8.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 1.7.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp3.1) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (4.7) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp5.0) - System.Diagnostics.Contracts (>= 4.3) - restriction: >= netcoreapp5.0 - System.Diagnostics.Debug (>= 4.3) - restriction: >= netcoreapp5.0 - System.Linq (>= 4.3) - restriction: >= netcoreapp5.0 - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.Extensions (4.7.1) - restriction: >= netstandard2.0 + System.Net.Http (4.3.4) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Requests (4.3) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Net.WebHeaderCollection (>= 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)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Net.Security (4.3.2) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Security (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.6)) (>= net46) + System.Security.Principal (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Threading.ThreadPool (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Net.WebHeaderCollection (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Numerics.Vectors (4.5) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) + System.ObjectModel (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 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.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reactive (5.0) - restriction: >= netstandard2.0 + System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< netcoreapp3.1) (>= netstandard2.0)) (>= uap10.1) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + 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)) + 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)) + System.Runtime (>= 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)) + 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) (< xamarinios) (< xamarinmac)) (&& (< 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) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Reflection.Emit.Lightweight (4.7) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) + System.Reflection.Extensions (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + 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.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.Reflection.Metadata (5.0) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) + 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.Reflection.TypeExtensions (4.7) - restriction: >= netstandard2.0 + System.Resources.Extensions (5.0) - restriction: >= netstandard2.0 System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.3) - 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)) (>= netcoreapp5.0) - System.Runtime.CompilerServices.Unsafe (4.7.1) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.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)) (>= netcoreapp5.0) - System.Runtime (>= 4.3.1) - 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)) (>= netcoreapp5.0) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1.1) - 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 (>= 1.1.3) - 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)) + System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monoandroid) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (>= net472) (&& (< net5.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (< netstandard1.6)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) (&& (< netstandard1.0) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= wp8)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1.1) - 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.Targets (>= 1.1.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)) + System.Runtime (>= 4.3.1) - 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)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) + System.Runtime.InteropServices (4.3) - restriction: >= netstandard2.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) - System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: && (< net46) (< netcoreapp3.0) (>= netstandard2.0) (< uap10.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Loader (4.3) - restriction: && (< net461) (>= netstandard2.0) + System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Loader (4.3) - restriction: >= netstandard2.0 System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.AccessControl (4.7) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 4.7) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Cryptography.ProtectedData (4.7) - restriction: || (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) - System.Memory (>= 4.5.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Security.Permissions (4.7) - restriction: >= netstandard2.0 - System.Security.AccessControl (>= 4.7) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 4.7) - restriction: >= netcoreapp3.0 - System.Security.Principal.Windows (4.7) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Text.Encoding.CodePages (4.7.1) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.NETCore.Platforms (>= 3.1.1) - restriction: >= netcoreapp2.0 - System.Runtime.CompilerServices.Unsafe (>= 4.7.1) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp3.1)) - System.Text.Encoding.Extensions (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading.Tasks.Dataflow (4.11.1) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= net46) (>= netstandard2.0)) (&& (< netcoreapp3.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.0)) + System.Runtime.Numerics (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + 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.AccessControl (5.0) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Claims (4.3) - restriction: >= netstandard2.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (>= net47) (>= net5.0)) (&& (>= net5.0) (< netstandard1.4)) (&& (>= net5.0) (< netstandard1.6)) (>= netstandard2.0) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) (&& (>= net5.0) (< netcoreapp2.0)) (&& (>= net5.0) (< netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.0) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Algorithms (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< net462) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6)) (>= net47) + System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net463) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.OpenSsl (5.0) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) + System.Formats.Asn1 (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.0) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net463) (>= netstandard2.0)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.ProtectedData (5.0) - restriction: || (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard2.0)) + System.Memory (>= 4.5.4) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Calendars (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Xml (5.0) - restriction: && (< net472) (>= netstandard2.0) + System.Memory (>= 4.5.4) - restriction: && (< monoandroid) (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (5.0) - restriction: >= netstandard2.0 + System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Principal (4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= 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.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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 (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (< net5.0) (>= netcoreapp2.0)) + System.Text.Encoding.Extensions (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + 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 (>= 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.Encodings.Web (5.0.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) + System.Buffers (>= 4.5.1) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) + System.Memory (>= 4.5.4) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) + System.Text.Json (5.0.1) - restriction: || (>= net472) (>= netcoreapp2.1) + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Numerics.Vectors (>= 4.5) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Text.Encodings.Web (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.ValueTuple (>= 4.5) - restriction: >= net461 + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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 (>= 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 (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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.Dataflow (5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (< netcoreapp3.1) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) - System.Threading.Thread (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ValueTuple (4.5) - restriction: || (&& (>= net46) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.0)) - System.Windows.Extensions (4.7) - restriction: >= netcoreapp3.0 - System.Drawing.Common (>= 4.7) - restriction: >= netcoreapp3.0 + System.Threading.Tasks.Parallel (4.3) - restriction: >= netstandard2.0 + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Threading.Thread (4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (4.3) - restriction: >= netstandard2.0 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ValueTuple (4.5) - restriction: || (&& (>= net45) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) + System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 + System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 GROUP Docs STORAGE: NONE @@ -1738,111 +2233,97 @@ NUGET 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) - Dotnet.ProjInfo (0.42.1) - restriction: || (>= net461) (>= netstandard2.0) - FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.NETFramework.ReferenceAssemblies (>= 1.0) - restriction: || (>= net461) (>= netstandard2.0) - System.ValueTuple (>= 4.4) - restriction: || (>= net461) (>= netstandard2.0) - Dotnet.ProjInfo.Workspace (0.42.1) - restriction: || (>= net461) (>= netstandard2.0) - Dotnet.ProjInfo (>= 0.42.1) - restriction: || (>= net461) (>= netstandard2.0) - FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.NETFramework.ReferenceAssemblies (>= 1.0) - restriction: || (>= net461) (>= netstandard2.0) - Sln (>= 0.3) - restriction: || (>= net461) (>= netstandard2.0) - Dotnet.ProjInfo.Workspace.FCS (0.39) - Dotnet.ProjInfo.Workspace (>= 0.39) - restriction: || (>= net461) (>= netstandard2.0) - FSharp.Compiler.Service (>= 34.1) - restriction: || (>= net461) (>= netstandard2.0) - FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.NETFramework.ReferenceAssemblies (>= 1.0) - restriction: || (>= net461) (>= netstandard2.0) Fable.Browser.Blob (1.1) - restriction: >= netstandard2.0 Fable.Core (>= 3.0) - restriction: >= netstandard2.0 FSharp.Core (>= 4.6.2) - restriction: >= netstandard2.0 - Fable.Browser.Dom (1.2) - restriction: >= netstandard2.0 + Fable.Browser.Dom (2.2) - restriction: >= netstandard2.0 Fable.Browser.Blob (>= 1.1) - restriction: >= netstandard2.0 - Fable.Browser.Event (>= 1.0) - restriction: >= netstandard2.0 + Fable.Browser.Event (>= 1.2.1) - restriction: >= netstandard2.0 Fable.Browser.WebStorage (>= 1.0) - restriction: >= netstandard2.0 Fable.Core (>= 3.0) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 - Fable.Browser.Event (1.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fable.Browser.Event (1.2.1) - restriction: >= netstandard2.0 Fable.Core (>= 3.0) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.5.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 Fable.Browser.WebStorage (1.0) - restriction: >= netstandard2.0 Fable.Browser.Event (>= 1.0) - restriction: >= netstandard2.0 Fable.Core (>= 3.0) - restriction: >= netstandard2.0 FSharp.Core (>= 4.5.2) - restriction: >= netstandard2.0 - Fable.Core (3.1.5) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 - Fable.React (6.2) - Fable.Browser.Dom (>= 1.0) - restriction: >= netstandard2.0 + Fable.Core (3.2.5) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fable.React (7.3) + Fable.Browser.Dom (>= 2.0.1) - restriction: >= netstandard2.0 Fable.Core (>= 3.1.5) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 - Fake.Core.Context (5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (5.20.1) - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Process (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 1.7) - restriction: >= netstandard2.0 - Fake.Core.SemVer (5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.String (5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Tasks (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Core.Xml (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (5.20.1) - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 + FSharp.Core (>= 5.0) - restriction: >= netstandard2.0 + Fake.Core.Context (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Environment (5.20.4-alpha.1642) + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Process (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 1.7.1) - restriction: >= netstandard2.0 + Fake.Core.SemVer (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.String (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Tasks (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Trace (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Xml (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (5.20.4-alpha.1642) + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Mono.Posix.NETStandard (>= 1.0) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (5.20.1) - restriction: >= netstandard2.0 - BlackFox.VsWhere (>= 1.0) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (>= 2.1.117) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Tasks (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Xml (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.1) - restriction: >= netstandard2.0 - Fake.Net.Http (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + BlackFox.VsWhere (>= 1.1) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (>= 2.1.176) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Tasks (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Xml (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Net.Http (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - NuGet.Protocol (>= 5.5.1) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (5.20.1) - Fake.Core.String (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - Fake.Net.Http (5.20.1) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.1) - restriction: >= netstandard2.0 - FSharp.Compiler.Service (34.1.1) + NuGet.Protocol (>= 5.6) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (5.20.4-alpha.1642) + Fake.Core.String (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Net.Http (5.20.4-alpha.1642) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4-alpha.1642) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + FSharp.Compiler.Service (34.1) FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) System.Buffers (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) System.Collections.Immutable (>= 1.5) - restriction: || (>= net461) (>= netstandard2.0) @@ -1855,110 +2336,97 @@ NUGET System.Runtime.Loader (>= 4.0) - restriction: && (< net461) (>= netstandard2.0) System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) System.ValueTuple (>= 4.4) - restriction: >= net461 - FSharp.Core (4.7.2) + FSharp.Core (5.0.1) 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.Build (16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.6) - restriction: || (>= net472) (>= netcoreapp2.1) + Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Build (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: || (>= net472) (>= netcoreapp2.1) Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: >= netcoreapp2.1 - System.Collections.Immutable (>= 1.5) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Memory (>= 4.5.3) - restriction: || (>= net472) (>= netcoreapp2.1) + System.Collections.Immutable (>= 5.0) - restriction: || (>= net472) (>= netcoreapp2.1) + System.Memory (>= 4.5.4) - restriction: || (>= net472) (>= netcoreapp2.1) System.Reflection.Metadata (>= 1.6) - restriction: >= netcoreapp2.1 System.Security.Principal.Windows (>= 4.7) - restriction: >= netcoreapp2.1 System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= netcoreapp2.1 + System.Text.Json (>= 4.7) - restriction: || (>= net472) (>= netcoreapp2.1) System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.Build.Framework (16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (16.9) - restriction: >= netstandard2.0 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Core (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.9) - restriction: >= netstandard2.0 Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net472) (>= netstandard2.0) System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 + System.Runtime.InteropServices (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (16.9) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.NETCore.Platforms (3.1.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) - Microsoft.NETCore.Targets (3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETFramework.ReferenceAssemblies (1.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.NETFramework.ReferenceAssemblies.net461 (>= 1.0) - restriction: && (>= net461) (< net462) - Microsoft.NETFramework.ReferenceAssemblies.net462 (>= 1.0) - restriction: && (>= net462) (< net47) - Microsoft.NETFramework.ReferenceAssemblies.net47 (>= 1.0) - restriction: && (>= net47) (< net471) - Microsoft.NETFramework.ReferenceAssemblies.net471 (>= 1.0) - restriction: && (>= net471) (< net472) - Microsoft.NETFramework.ReferenceAssemblies.net472 (>= 1.0) - restriction: && (>= net472) (< net48) - Microsoft.NETFramework.ReferenceAssemblies.net48 (>= 1.0) - restriction: >= net48 - Microsoft.NETFramework.ReferenceAssemblies.net461 (1.0) - restriction: && (>= net461) (< net462) - Microsoft.NETFramework.ReferenceAssemblies.net462 (1.0) - restriction: && (>= net462) (< net47) - Microsoft.NETFramework.ReferenceAssemblies.net47 (1.0) - restriction: && (>= net47) (< net471) - Microsoft.NETFramework.ReferenceAssemblies.net471 (1.0) - restriction: && (>= net471) (< net472) - Microsoft.NETFramework.ReferenceAssemblies.net472 (1.0) - restriction: && (>= net472) (< net48) - Microsoft.NETFramework.ReferenceAssemblies.net48 (1.0) - restriction: >= net48 + Microsoft.NETCore.Platforms (5.0.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (< net45) (>= net463) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net5.0) (< netstandard2.1)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net463) (>= netstandard2.0)) Microsoft.VisualStudio.Setup.Configuration.Interop (1.16.30) - restriction: >= net472 - Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (4.7) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Buffers (>= 4.5) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) - System.Security.AccessControl (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (4.7) - restriction: >= netcoreapp3.0 - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 + Microsoft.Win32.Registry (5.0) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Security.AccessControl (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.SystemEvents (5.0) - restriction: >= netcoreapp3.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (2.1.133) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (2.1.303) - restriction: >= netstandard2.0 Microsoft.Build (>= 16.4) - restriction: >= netstandard2.0 Microsoft.Build.Framework (>= 16.4) - restriction: >= netstandard2.0 Microsoft.Build.Tasks.Core (>= 16.4) - restriction: >= netstandard2.0 Microsoft.Build.Utilities.Core (>= 16.4) - restriction: >= netstandard2.0 - System.IO.Compression (>= 4.3) - restriction: >= netstandard2.0 Newtonsoft.Json (12.0.3) - restriction: >= netstandard2.0 - NuGet.Common (5.6) - restriction: >= netstandard2.0 - NuGet.Frameworks (>= 5.6) - restriction: >= netstandard2.0 - System.Diagnostics.Process (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Threading.Thread (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Configuration (5.6) - restriction: >= netstandard2.0 - NuGet.Common (>= 5.6) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Frameworks (5.6) - restriction: >= netstandard2.0 - NuGet.Packaging (5.6) - restriction: >= netstandard2.0 + NuGet.Common (5.9) - restriction: >= netstandard2.0 + NuGet.Frameworks (>= 5.9) - restriction: || (>= net45) (>= netstandard2.0) + NuGet.Configuration (5.9) - restriction: >= netstandard2.0 + NuGet.Common (>= 5.9) - restriction: || (>= net45) (>= netstandard2.0) + System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net45) (>= netstandard2.0) + NuGet.Frameworks (5.9) - restriction: >= netstandard2.0 + NuGet.Packaging (5.9) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 9.0.1) - restriction: >= netstandard2.0 - NuGet.Configuration (>= 5.6) - restriction: >= netstandard2.0 - NuGet.Versioning (>= 5.6) - restriction: >= netstandard2.0 - System.Dynamic.Runtime (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Protocol (5.6) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 5.6) - restriction: >= netstandard2.0 - System.Dynamic.Runtime (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - NuGet.Versioning (5.6) - restriction: >= netstandard2.0 - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.IO.Compression (4.3.2) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) + NuGet.Configuration (>= 5.9) - restriction: >= netstandard2.0 + NuGet.Versioning (>= 5.9) - restriction: >= netstandard2.0 + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + NuGet.Protocol (5.9) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 5.9) - restriction: >= netstandard2.0 + NuGet.Versioning (5.9) - restriction: >= netstandard2.0 + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.native.System (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) @@ -1974,67 +2442,64 @@ NUGET runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - Sln (0.3) - restriction: || (>= net461) (>= netstandard2.0) - System.Buffers (4.5.1) - restriction: || (>= net461) (>= netstandard2.0) - System.CodeDom (4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= 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)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Collections.Immutable (1.7.1) - restriction: || (>= net461) (>= netstandard2.0) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.1)) (>= net461) (&& (>= net5.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) (>= netstandard2.0) + System.CodeDom (5.0) - restriction: && (< net472) (>= netstandard2.0) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net463) (>= netstandard2.0)) + 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.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Collections.Immutable (5.0) - restriction: || (>= net461) (>= netstandard2.0) System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) - System.Configuration.ConfigurationManager (4.7) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 4.7) - restriction: && (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Security.Permissions (>= 4.7) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Diagnostics.Contracts (4.3) - restriction: >= netcoreapp5.0 - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Diagnostics.Process (4.3) - restriction: || (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Configuration.ConfigurationManager (5.0) - restriction: >= netstandard2.0 + System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net463) (>= netstandard2.0)) + 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.Diagnostics.Process (4.3) - restriction: && (< net461) (>= netstandard2.0) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Diagnostics.TraceSource (4.3) - restriction: && (< net461) (>= netstandard2.0) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2045,56 +2510,24 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Drawing.Common (4.7) - restriction: >= netcoreapp3.0 - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 - Microsoft.Win32.SystemEvents (>= 4.7) - restriction: >= netcoreapp2.0 - System.Dynamic.Runtime (4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: >= netcoreapp5.0 - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.IO.Compression (4.3) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Buffers (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO.FileSystem (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net463) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 + Microsoft.Win32.SystemEvents (>= 5.0) - restriction: >= netcoreapp2.0 + System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (>= net5.0)) (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= net5.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= net5.0) (< netcoreapp2.0)) (&& (>= net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= net5.0) (>= uap10.1)) (&& (>= net5.0) (>= xamarintvos)) (&& (>= net5.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= net463) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + System.Runtime (>= 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)) + 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)) + 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)) + System.IO.FileSystem (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2103,110 +2536,57 @@ NUGET System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.IO.FileSystem.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Memory (4.5.4) - restriction: || (>= net461) (>= netstandard2.0) + System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Memory (4.5.4) - restriction: || (>= net461) (&& (>= net5.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (>= net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= net5.0) (>= uap10.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) (>= netstandard2.0) System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Numerics.Vectors (>= 4.4) - restriction: && (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) System.Numerics.Vectors (>= 4.5) - restriction: >= net461 System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Numerics.Vectors (4.5) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) - System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - 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)) (>= netcoreapp5.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)) (>= netcoreapp5.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)) (>= netcoreapp5.0) - System.Runtime (>= 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)) (>= netcoreapp5.0) - System.Reflection.Emit (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp5.0) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= netstandard2.0)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.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) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= netcoreapp5.0) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (>= netcoreapp5.0) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< portable-net45+wp8) (< win8)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.Lightweight (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.Metadata (1.8.1) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.Immutable (>= 1.7.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp3.1) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection.TypeExtensions (4.7) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp5.0) - System.Diagnostics.Contracts (>= 4.3) - restriction: >= netcoreapp5.0 - System.Diagnostics.Debug (>= 4.3) - restriction: >= netcoreapp5.0 - System.Linq (>= 4.3) - restriction: >= netcoreapp5.0 - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Reflection.Primitives (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: >= netcoreapp5.0 - System.Resources.Extensions (4.7.1) - restriction: >= netstandard2.0 + System.Numerics.Vectors (4.5) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1) - 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.Targets (>= 1.1) - 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)) + 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)) + 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)) + System.Runtime (>= 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)) + System.Reflection.Emit (4.7) - restriction: && (< net461) (>= 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) (< xamarinios) (< xamarinmac)) (&& (< 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) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Reflection.Metadata (5.0) - restriction: || (>= net461) (>= netstandard2.0) + System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) + 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.Reflection.TypeExtensions (4.7) - restriction: || (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) + System.Resources.Extensions (5.0) - restriction: >= netstandard2.0 System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.3) - 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)) (>= netcoreapp5.0) - System.Runtime.CompilerServices.Unsafe (4.7.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - Microsoft.NETCore.Platforms (>= 1.1.1) - 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)) (>= netcoreapp5.0) - Microsoft.NETCore.Targets (>= 1.1.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)) (>= netcoreapp5.0) - System.Runtime (>= 4.3.1) - 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)) (>= netcoreapp5.0) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (>= netcoreapp5.0) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= net463) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1.1) - 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 (>= 1.1.3) - 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)) + System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< net5.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (< netstandard1.0)) (&& (>= netcoreapp2.1) (< netstandard2.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= wp8)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + Microsoft.NETCore.Platforms (>= 1.1.1) - 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.Targets (>= 1.1.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)) + System.Runtime (>= 4.3.1) - 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)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp1.1) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) + System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) @@ -2217,30 +2597,34 @@ NUGET System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Security.AccessControl (4.7) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp5.0)) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 4.7) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: && (< net461) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) (>= netcoreapp5.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) (>= netcoreapp5.0) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) (>= netcoreapp5.0) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp5.0) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) + System.Runtime.Numerics (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + 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.AccessControl (5.0) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= net5.0) (< netstandard1.4)) (&& (>= net5.0) (< netstandard1.6)) (&& (>= net5.0) (< netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) (&& (>= net5.0) (< netcoreapp2.0)) (&& (>= net5.0) (< netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.0) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Algorithms (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< net462) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6)) (>= net47) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net461) (>= net463) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2253,7 +2637,12 @@ NUGET System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net461) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) + System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) + System.Formats.Asn1 (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.0) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net461) (>= net463) (>= netstandard2.0)) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2261,38 +2650,56 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.ProtectedData (4.7) - restriction: || (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) - System.Memory (>= 4.5.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Security.Permissions (4.7) - restriction: >= netstandard2.0 - System.Security.AccessControl (>= 4.7) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 4.7) - restriction: >= netcoreapp3.0 - System.Security.Principal.Windows (4.7) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (>= net461) (>= netstandard2.0)) (&& (>= netcoreapp2.0) (< netcoreapp5.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Text.Encoding.CodePages (4.7.1) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.NETCore.Platforms (>= 3.1.1) - restriction: >= netcoreapp2.0 - System.Runtime.CompilerServices.Unsafe (>= 4.7.1) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp3.1)) - System.Text.Encoding.Extensions (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (>= netcoreapp5.0) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net46) (>= net463) (>= netstandard2.0)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - 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)) (>= netcoreapp5.0) - System.Threading.Tasks.Dataflow (4.11.1) - restriction: >= netstandard2.0 - System.Threading.Thread (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net472) (>= netstandard2.0)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: && (< monoandroid) (< net46) (< netcoreapp5.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (< netcoreapp5.0) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ValueTuple (4.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (4.7) - restriction: >= netcoreapp3.0 - System.Drawing.Common (>= 4.7) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.ProtectedData (5.0) - restriction: || (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= netstandard2.0)) + System.Memory (>= 4.5.4) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Cryptography.Xml (5.0) - restriction: && (< net472) (>= netstandard2.0) + System.Memory (>= 4.5.4) - restriction: && (< monoandroid) (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Permissions (5.0) - restriction: >= netstandard2.0 + System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Principal.Windows (5.0) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (>= net461) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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 (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (< net5.0) (>= netcoreapp2.0)) + System.Text.Encoding.Extensions (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + 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 (>= 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.Encodings.Web (5.0.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) + System.Buffers (>= 4.5.1) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) + System.Memory (>= 4.5.4) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) + System.Text.Json (5.0.1) - restriction: || (>= net472) (>= netcoreapp2.1) + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Buffers (>= 4.5.1) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Numerics.Vectors (>= 4.5) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Text.Encodings.Web (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.ValueTuple (>= 4.5) - restriction: >= net461 + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net45) (>= net463) (>= netstandard2.0)) + 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 (>= 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 (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) + 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.Dataflow (5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + System.Threading.Thread (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ValueTuple (4.5) - restriction: >= net461 + System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 + System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 1a73f7c..a31b822 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,6 +1,7 @@ + true true false diff --git a/src/EFCore.FSharp/DbContextHelpers.fs b/src/EFCore.FSharp/DbContextHelpers.fs new file mode 100644 index 0000000..f059944 --- /dev/null +++ b/src/EFCore.FSharp/DbContextHelpers.fs @@ -0,0 +1,10 @@ +module EntityFrameworkCore.FSharp.DbContextHelpers + +open Microsoft.EntityFrameworkCore + +/// Helper method for saving an updated record type +let updateEntity (ctx: #DbContext) (key: 'a -> obj) (entity : 'a when 'a : not struct) = + let currentEntity = ctx.Set<'a>().Find (key entity) + ctx.Entry(currentEntity).CurrentValues.SetValues(entity :> obj) + ctx.SaveChanges() |> ignore + entity diff --git a/src/EFCore.FSharp/EFCore.FSharp.fsproj b/src/EFCore.FSharp/EFCore.FSharp.fsproj index cfdc585..b5237b5 100644 --- a/src/EFCore.FSharp/EFCore.FSharp.fsproj +++ b/src/EFCore.FSharp/EFCore.FSharp.fsproj @@ -1,27 +1,33 @@ - + - netstandard2.1 + net5.0 EntityFrameworkCore.FSharp EntityFrameworkCore.FSharp - Brice Lambson + Simon Reynolds, Brice Lambson et al. Adds F# design-time support to EF Core - https://github.com/efcore/EFCore.FSharp/blob/master/LICENSE + https://github.com/efcore/EFCore.FSharp/blob/master/LICENSE.md https://github.com/efcore/EFCore.FSharp - EFCore + Entity Framework Core;entity-framework-core;ef;efcore;fsharp https://github.com/efcore/EFCore.FSharp.git git © 2018 Brice Lambson. All rights reserved. latest bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml true - 3.1.5-alpha1 + 5.0.3-alpha1 true + + true + true + + + @@ -30,11 +36,11 @@ - + diff --git a/src/EFCore.FSharp/EFCoreFSharpServices.fs b/src/EFCore.FSharp/EFCoreFSharpServices.fs index 4b33ec5..cbdc188 100644 --- a/src/EFCore.FSharp/EFCoreFSharpServices.fs +++ b/src/EFCore.FSharp/EFCoreFSharpServices.fs @@ -1,4 +1,4 @@ -namespace EntityFrameworkCore.FSharp +namespace EntityFrameworkCore.FSharp open Microsoft.EntityFrameworkCore.Design open Microsoft.EntityFrameworkCore.Migrations.Design @@ -6,15 +6,23 @@ open Microsoft.EntityFrameworkCore.Scaffolding open Microsoft.EntityFrameworkCore.Scaffolding.Internal open Microsoft.Extensions.DependencyInjection +open EntityFrameworkCore.FSharp open EntityFrameworkCore.FSharp.Scaffolding open EntityFrameworkCore.FSharp.Scaffolding.Internal open EntityFrameworkCore.FSharp.Migrations.Design open EntityFrameworkCore.FSharp.Internal -type EFCoreFSharpServices() = +type EFCoreFSharpServices(scaffoldOptions : ScaffoldOptions) = + + new () = EFCoreFSharpServices(ScaffoldOptions.Default) + + static member Default = EFCoreFSharpServices() :> IDesignTimeServices + static member WithScaffoldOptions scaffoldOptions = EFCoreFSharpServices scaffoldOptions :> IDesignTimeServices + interface IDesignTimeServices with member __.ConfigureDesignTimeServices(services: IServiceCollection) = services + .AddSingleton(scaffoldOptions) .AddSingleton() .AddSingleton() .AddSingleton() diff --git a/src/EFCore.FSharp/Internal/FSharpHelper.fs b/src/EFCore.FSharp/Internal/FSharpHelper.fs index 4ad3d48..d0499a3 100644 --- a/src/EFCore.FSharp/Internal/FSharpHelper.fs +++ b/src/EFCore.FSharp/Internal/FSharpHelper.fs @@ -12,6 +12,7 @@ open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities open EntityFrameworkCore.FSharp.SharedTypeExtensions open Microsoft.EntityFrameworkCore.Design open Microsoft.EntityFrameworkCore.Storage +open Microsoft.EntityFrameworkCore.Infrastructure type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = let _builtInTypes = @@ -140,45 +141,51 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = "yield!"; "yield"; |] - + member private this.ReferenceFullName (t: Type) useFullName = match _builtInTypes.TryGetValue t with | true, value -> value | _ -> - if t |> isNullableType then + if t |> isNullableType then sprintf "Nullable<%s>" (this.ReferenceFullName (t |> unwrapNullableType) useFullName) - elif t |> isOptionType then + elif t |> isOptionType then sprintf "%s option" (this.ReferenceFullName (t |> unwrapOptionType) useFullName) else let builder = StringBuilder() + let returnName() = + let name = + displayName t useFullName + + builder.Append(name) |> string + if t.IsArray then builder .Append(this.ReferenceFullName (t.GetElementType()) false) .Append("[") |> ignore - (',', t.GetArrayRank()) |> String |> builder.Append |> ignore - builder.Append("]") |> ignore + match t.GetArrayRank() with + | 1 -> builder.Append("]") |> ignore + | n -> (',', n) |> String |> builder.Append |> ignore + builder |> string elif t.IsNested then builder .Append(this.ReferenceFullName (t.DeclaringType) false) .Append(".") |> ignore - - let name = - t.DisplayName(useFullName) - - builder.Append(name) |> string + returnName() + else returnName() member private this.ensureDecimalPlaces (number:string) = if number.IndexOf('.') >= 0 then number else number + ".0" member private this.literalString(value: string) = - if value.Contains(Environment.NewLine) || value.Contains('\r') then - "@\"" + value.Replace("\"", "\"\"") + "\"" - else - "\"" + value.Replace("\\", "\\\\").Replace("\"", "\\\"") + "\"" + "\"" + + value.Replace(@"\", @"\\") + .Replace("\"", "\\\"") + .Replace("\n", @"\n") + .Replace("\r", @"\r") + "\"" member private this.literalBoolean(value: bool) = if value then "true" else "false" @@ -201,33 +208,54 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = "\'" + (if value = '\'' then "\\'" else value.ToString()) + "\'" member private this.literalDateTime(value: DateTime) = - sprintf "DateTime(%d, %d, %d, %d, %d, %d,%d, DateTimeKind.%A)" - value.Year value.Month value.Day value.Hour value.Minute value.Second value.Millisecond value.Kind + sprintf "DateTime(%d, %d, %d, %d, %d, %d, %d, DateTimeKind.%A)%s" + value.Year + value.Month + value.Day + value.Hour + value.Minute + value.Second + value.Millisecond + value.Kind + (if value.Ticks % 10_000L = 0L then "" + else String.Format( + CultureInfo.InvariantCulture, + ".AddTicks({0}L)", + value.Ticks % 10_000L)) member private this.literalTimeSpan(value: TimeSpan) = - sprintf "TimeSpan(%d, %d, %d, %d, %d)" value.Days value.Hours value.Minutes value.Seconds value.Milliseconds + if value.Ticks % 10_000L = 0L then + sprintf "TimeSpan(%d, %d, %d, %d, %d)" + value.Days + value.Hours + value.Minutes + value.Seconds + value.Milliseconds + else String.Format(CultureInfo.InvariantCulture, + "TimeSpan({0}L)", + value.Ticks) member private this.literalDateTimeOffset(value: DateTimeOffset) = sprintf "DateTimeOffset(%s, %s)" (value.DateTime |> this.literalDateTime) (value.Offset |> this.literalTimeSpan) - + member private this.literalDecimal(value: decimal) = sprintf "%fm" value - + member private this.literalDouble(value: double) = (value.ToString("R", CultureInfo.InvariantCulture)) |> this.ensureDecimalPlaces - + member private this.literalFloat32(value: float32) = sprintf "(float32 %f)" value - + member private this.literalGuid(value: Guid) = sprintf "Guid(\"%A\")" value - + member private this.literalInt(value: int) = sprintf "%d" value - + member private this.literalInt64(value: Int64) = sprintf "%dL" value - + member private this.literalSByte(value: sbyte) = sprintf "(sbyte %d)" value @@ -236,10 +264,10 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = member private this.literalUInt32(value: UInt32) = sprintf "%du" value - + member private this.literalUInt64(value: UInt64) = sprintf "%duL" value - + member private this.literalUInt16(value: UInt16) = sprintf "%dus" value @@ -266,8 +294,8 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = member private this.literalArray2D(values: obj[,]) = - let rowCount = Array2D.length1 values - let valuesCount = Array2D.length2 values + let rowCount = Array2D.length1 values - 1 + let valuesCount = Array2D.length2 values - 1 let rowContents = [0..rowCount] @@ -305,7 +333,7 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = member private this.handleExpression (expression:Expression) simple (sb:IndentedStringBuilder) = match expression.NodeType with | ExpressionType.NewArrayInit -> - + sb |> append "[| " |> ignore this.handleList (expression :?> NewArrayExpression).Expressions true sb |> ignore sb |> append " |]" |> ignore @@ -318,11 +346,11 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = result | ExpressionType.New -> - sb |> append (this.ReferenceFullName expression.Type true) |> ignore + sb |> append (this.ReferenceFullName expression.Type true) |> ignore this.handleArguments ((expression :?> NewExpression).Arguments) sb | ExpressionType.Call -> - + let mutable exitEarly = false let callExpr = expression :?> MethodCallExpression @@ -331,7 +359,7 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = else if (not (this.handleExpression callExpr.Object false sb)) then exitEarly <- true - + if exitEarly then false else @@ -349,9 +377,39 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = sb |> append valueToWrite |> ignore true + + | ExpressionType.MemberAccess -> + let memberExpression = expression :?> MemberExpression + let appendAndReturn() = + sb + |> append "." + |> append memberExpression.Member.Name + |> ignore + true + + if memberExpression.Expression |> isNull then + sb + |> append (this.ReferenceFullName memberExpression.Member.DeclaringType true) + |> ignore + appendAndReturn() + elif this.handleExpression memberExpression.Expression false sb |> not then + false + else appendAndReturn() + | ExpressionType.Add -> + let binaryExpression = expression :?> BinaryExpression + + if this.handleExpression binaryExpression.Left false sb |> not then + false + else + sb + |> append " + " + |> ignore + if this.handleExpression binaryExpression.Right false sb |> not then + false + else true | _ -> false - + member private this.getSimpleEnumValue t name = (this.ReferenceFullName t false) + "." + name @@ -494,9 +552,10 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = if isNull f.ChainedCall then b - else + else this.buildFragment f.ChainedCall b + member private this.unknownLiteral (value: obj) = if isNull value then "null" @@ -506,7 +565,7 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = | :? Enum as e -> this.literalEnum e | :? bool as e -> this.literalBoolean e | :? byte as e -> this.literalByte e - | :? (byte array) as e -> this.literalByteArray e + | :? (byte array) as e -> this.literalByteArray e | :? char as e -> this.literalChar e | :? DateTime as e -> this.literalDateTime e | :? DateTimeOffset as e -> this.literalDateTimeOffset e @@ -539,7 +598,7 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = else t invalidOp (type' |> DesignStrings.UnknownLiteral) else - let builder = new IndentedStringBuilder() + let builder = IndentedStringBuilder() let expression = mapping.GenerateCodeLiteral(value) let handled = this.handleExpression expression false builder @@ -548,79 +607,82 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = else let args = ( (expression.ToString()), - (literalType.DisplayName(false)) + (displayName literalType false) ) args |> DesignStrings.LiteralExpressionNotSupported |> NotSupportedException |> raise - + interface ICSharpHelper with member this.Fragment (fragment: MethodCallCodeFragment) = this.buildFragment fragment (StringBuilder()) |> string - member this.Identifier(name: string, scope: ICollection): string = + member this.Identifier(name: string, scope: ICollection): string = if isNull scope then this.IdentifierWithScope name [||] else this.IdentifierWithScope name scope - member this.Lambda(properties: IReadOnlyList): string = + member this.Lambda(properties: IReadOnlyList, lambdaIdentifier: string): string = + + let lambdaIdentifier' = if String.IsNullOrEmpty lambdaIdentifier then "x" else lambdaIdentifier + StringBuilder() - .Append("(fun x -> ") + .Append(sprintf "(fun %s -> " lambdaIdentifier') .Append("(") - .Append(String.Join(", ", (properties |> Seq.map(fun p -> "x." + p)))) + .Append(String.Join(", ", (properties |> Seq.map(fun p -> lambdaIdentifier' + "." + p)))) .Append(") :> obj)") |> string - member this.Literal(values: obj [,]): string = + member this.Literal(values: obj [,]): string = this.literalArray2D values - member this.Literal(value: Nullable<'T>): string = + member this.Literal(value: Nullable<'T>): string = this.unknownLiteral value - member this.Literal(value: bool): string = + member this.Literal(value: bool): string = this.literalBoolean value - member this.Literal(value: byte): string = + member this.Literal(value: byte): string = this.literalByte value - member this.Literal(value: char): string = + member this.Literal(value: char): string = this.literalChar value - member this.Literal(value: DateTime): string = + member this.Literal(value: DateTime): string = this.literalDateTime value - member this.Literal(value: DateTimeOffset): string = + member this.Literal(value: DateTimeOffset): string = this.literalDateTimeOffset value - member this.Literal(value: decimal): string = + member this.Literal(value: decimal): string = this.literalDecimal value - member this.Literal(value: float): string = + member this.Literal(value: float): string = this.literalDouble value - member this.Literal(value: Enum): string = + member this.Literal(value: Enum): string = this.literalEnum value - member this.Literal(value: float32): string = + member this.Literal(value: float32): string = this.literalFloat32 value - member this.Literal(value: Guid): string = + member this.Literal(value: Guid): string = this.literalGuid value - member this.Literal(value: int): string = + member this.Literal(value: int): string = this.literalInt value - member this.Literal(value: int64): string = + member this.Literal(value: int64): string = this.literalInt64 value - member this.Literal(value: sbyte): string = + member this.Literal(value: sbyte): string = this.literalSByte value - member this.Literal(value: int16): string = + member this.Literal(value: int16): string = this.literalInt16 value - member this.Literal(value: string): string = + member this.Literal(value: string): string = this.literalString value member this.Literal(value: TimeSpan) = @@ -635,12 +697,12 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = member this.Literal(value: UInt64) = this.literalUInt64 value - member this.Literal(values: 'T [], vertical: bool): string = + member this.Literal(values: 'T [], vertical: bool): string = this.literalList (values |> Seq.cast |> ResizeArray) vertical (IndentedStringBuilder()) - member this.Namespace(name: string []): string = + member this.Namespace(name: string []): string = let join (ns': string array) = String.Join(".", ns') - + let ns = name |> Array.filter(String.IsNullOrEmpty >> not) @@ -648,13 +710,12 @@ type FSharpHelper(relationalTypeMappingSource : IRelationalTypeMappingSource) = |> Array.map(fun t -> (this :> ICSharpHelper).Identifier(t, null)) |> Array.filter(String.IsNullOrEmpty >> not) |> join - + if String.IsNullOrEmpty ns then "_" else ns - member this.Reference(t: Type): string = + member this.Reference(t: Type): string = this.ReferenceFullName t false - member this.UnknownLiteral(value: obj): string = + member this.UnknownLiteral(value: obj): string = this.unknownLiteral value - \ No newline at end of file diff --git a/src/EFCore.FSharp/Library.fs b/src/EFCore.FSharp/Library.fs deleted file mode 100644 index 3d5b516..0000000 --- a/src/EFCore.FSharp/Library.fs +++ /dev/null @@ -1,56 +0,0 @@ -namespace EFCore.FSharp -open System -open System.Security.Cryptography -open System.Text - -/// Initial module -module Say = - - /// Finite list of Colors - type FavoriteColor = - | Red - | Yellow - | Blue - - /// A person with many different field types - type Person = { - Name : string - FavoriteNumber : int - FavoriteColor : FavoriteColor - DateOfBirth : DateTimeOffset - } - - /// Says hello to a specific person - let helloPerson (person : Person) = - sprintf - "Hello %s. You were born on %s and your favorite number is %d. You like %A." - person.Name - (person.DateOfBirth.ToString("yyyy/MM/dd")) - person.FavoriteNumber - person.FavoriteColor - - /// - /// Adds two integers and and returns the result. - /// - /// - /// - /// This usually contains some really important information that you'll miss if you don't read the docs. - /// - /// - /// An integer. - /// An integer. - /// - /// - /// The sum of two integers. - /// - /// - /// Thrown when one parameter is max - /// and the other is greater than 0. - let add a b = - a + b - - - /// I do nothing - let nothing name = - name |> ignore - diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs index 52c4fc1..06d977f 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs @@ -2,7 +2,6 @@ namespace EntityFrameworkCore.FSharp.Migrations.Design open System open System.Collections.Generic -open Microsoft.FSharp.Linq.NullableOperators open Microsoft.EntityFrameworkCore.Migrations.Operations open Microsoft.EntityFrameworkCore.Internal @@ -12,6 +11,7 @@ open EntityFrameworkCore.FSharp.Internal open Microsoft.EntityFrameworkCore.Infrastructure open Microsoft.EntityFrameworkCore.Migrations open Microsoft.EntityFrameworkCore.Design +open Microsoft.EntityFrameworkCore.Migrations.Design type FSharpMigrationOperationGenerator (code : ICSharpHelper) = @@ -22,16 +22,10 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = if FSharpUtilities.isKeyword name then sprintf "``%s``" name else name let writeName nameValue sb = - sb - |> append "name = " |> appendLine (nameValue |> code.UnknownLiteral) + sb |> appendLine (sprintf "name = %s" (code.UnknownLiteral nameValue)) let writeParameter name value sb = - - let n = sanitiseName name - let v = value |> code.UnknownLiteral - let fmt = sprintf ", %s = %s" n v - - sb |> append fmt + sb |> appendLine (sprintf ",%s = %s" (sanitiseName name) (code.UnknownLiteral value)) let writeParameterIfTrue trueOrFalse name value sb = if trueOrFalse then @@ -40,7 +34,8 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = sb let writeOptionalParameter (name:string) value (sb:IndentedStringBuilder) = - sb |> writeParameterIfTrue (value |> notNull) name (sprintf "Nullable(%s)" value) + sb + |> writeParameterIfTrue (value |> notNull) name (sanitiseName value) let writeNullableParameterIfValue name (nullableParameter: Nullable<_>) sb = @@ -57,11 +52,7 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> Seq.iter(fun a -> sb |> appendEmptyLine - |> append ".Annotation(" - |> append (code.Literal a.Name) - |> append ", " - |> append (code.UnknownLiteral a.Value) - |> append ")" + |> append (sprintf ".Annotation(%s, %s)" (code.Literal a.Name) (code.UnknownLiteral a.Value)) |> ignore ) sb @@ -81,13 +72,6 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = let generateAddColumnOperation (op:AddColumnOperation) (sb:IndentedStringBuilder) = - let isPropertyRequired = - let isNullable = - op.ClrType |> isOptionType || - op.ClrType |> isNullableType - - isNullable <> op.IsNullable - sb |> append ".AddColumn<" |> append (op.ClrType |> unwrapOptionType |> code.Reference) @@ -113,7 +97,6 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = id |> append ")" |> appendIfTrue (op.ClrType |> isOptionType) (sprintf ".SetValueConverter(OptionConverter<%s> ())" (op.ClrType |> unwrapOptionType |> code.Reference)) - |> annotations (op.GetAnnotations()) |> unindent @@ -133,9 +116,10 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> writeParameterIfTrue (op.PrincipalColumns.Length <> 1) "principalColumns" op.PrincipalColumns |> writeParameterIfTrue (op.OnUpdate <> ReferentialAction.NoAction) "onUpdate" op.OnUpdate |> writeParameterIfTrue (op.OnDelete <> ReferentialAction.NoAction) "onDelete" op.OnDelete + |> unindent |> append ")" |> annotations (op.GetAnnotations()) - |> unindent + let generateAddPrimaryKeyOperation (op:AddPrimaryKeyOperation) (sb:IndentedStringBuilder) = sb @@ -146,9 +130,9 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> writeParameter "table" op.Table |> writeParameterIfTrue (op.Columns.Length = 1) "column" op.Columns.[0] |> writeParameterIfTrue (op.Columns.Length <> 1) "columns" op.Columns + |> unindent |> append ")" |> annotations (op.GetAnnotations()) - |> unindent let generateAddUniqueConstraintOperation (op:AddUniqueConstraintOperation) (sb:IndentedStringBuilder) = sb @@ -159,9 +143,9 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> writeParameter "table" op.Table |> writeParameterIfTrue (op.Columns.Length = 1) "column" op.Columns.[0] |> writeParameterIfTrue (op.Columns.Length <> 1) "columns" op.Columns + |> unindent |> append ")" |> annotations (op.GetAnnotations()) - |> unindent let generateAlterColumnOperation (op:AlterColumnOperation) (sb:IndentedStringBuilder) = sb @@ -189,7 +173,7 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> if op.OldColumn.ClrType |> isNull |> not then (fun sb -> sb - |> append (sprintf ", oldClrType = typedefof<%s>" (op.OldColumn.ClrType |> code.Reference)) + |> append (sprintf ",oldClrType = typedefof<%s>" (op.OldColumn.ClrType |> code.Reference)) |> appendEmptyLine) else id @@ -307,11 +291,13 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = map.Add(c.Name, propertyName) sb - |> append propertyName - |> append " = table.Column<" + |> appendLine (sprintf "%s =" propertyName) + |> indent + |> append "table.Column<" |> append (code.Reference c.ClrType) - |> append ">(" - |> append "nullable = " |> append (c.IsNullable |> code.Literal) + |> appendLine ">(" + |> indent + |> appendLine (sprintf "nullable = %s" (code.Literal c.IsNullable)) |> writeParameterIfTrue (c.Name <> propertyName) "name" c.Name |> writeParameterIfTrue (c.ColumnType |> notNull) "type" c.ColumnType |> writeNullableParameterIfValue "unicode" c.IsUnicode @@ -319,34 +305,36 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> writeParameterIfTrue (c.IsRowVersion) "rowVersion" c.IsRowVersion |> if c.DefaultValueSql |> notNull then - append (sprintf ", defaultValueSql = %s" (c.DefaultValueSql |> code.Literal)) + appendLine (sprintf ", defaultValueSql = %s" (code.Literal c.DefaultValueSql)) elif c.ComputedColumnSql |> notNull then - append (sprintf ", computedColumnSql = %s" (c.ComputedColumnSql |> code.Literal)) + appendLine (sprintf ", computedColumnSql = %s" (code.Literal c.ComputedColumnSql)) elif c.DefaultValue |> notNull then - append (sprintf ", defaultValue = %s" (c.DefaultValue |> code.UnknownLiteral)) + appendLine (sprintf ", defaultValue = %s" (code.UnknownLiteral c.DefaultValue)) else id + |> unindent |> append ")" |> appendIfTrue (c.ClrType |> isOptionType) (sprintf ".SetValueConverter(OptionConverter<%s> ())" (c.ClrType |> unwrapOptionType |> code.Reference)) |> indent |> annotations (c.GetAnnotations()) |> unindent + |> unindent |> appendEmptyLine |> ignore let writeColumns sb = sb - |> append "," |> appendLine "columns = (fun table -> " - |> appendLine "{" + |> appendLine ",columns = (fun table -> " + |> appendLine "{|" |> indent |> ignore - op.Columns |> Seq.filter(notNull) |> Seq.iter(writeColumn) + op.Columns |> Seq.filter notNull |> Seq.iter writeColumn sb |> unindent - |> appendLine "})" + |> appendLine "|})" let writeUniqueConstraint (uc:AddUniqueConstraintOperation) = sb @@ -368,7 +356,7 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> append "name = " |> append (fk.Name |> code.Literal) |> appendLine "," |> append (if fk.Columns.Length = 1 then "column = " else "columns = ") - |> append (fk.Columns |> Seq.map(fun c -> map.[c]) |> Seq.toList |> code.Lambda) + |> appendLine (fk.Columns |> Seq.map(fun c -> map.[c]) |> Seq.toList |> code.Lambda) |> writeParameterIfTrue (fk.PrincipalSchema |> notNull) "principalSchema" fk.PrincipalSchema |> writeParameter "principalTable" fk.PrincipalTable |> writeParameterIfTrue (fk.PrincipalColumns.Length = 1) "principalColumn" fk.PrincipalColumns.[0] @@ -378,37 +366,46 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> append ")" |> annotations (fk.GetAnnotations()) - |> unindent |> appendLine " |> ignore" |> appendEmptyLine + |> unindent |> ignore () let writeConstraints sb = - sb |> append "," |> appendLine "constraints =" - |> indent - |> appendLine "(fun table -> " - |> indent - |> ignore - if op.PrimaryKey |> notNull then - sb - |> append "table.PrimaryKey(" - |> append (op.PrimaryKey.Name |> code.Literal) - |> append ", " - |> append (op.PrimaryKey.Columns |> Seq.map(fun c -> map.[c]) |> Seq.toList |> code.Lambda) - |> appendLine ") |> ignore" - |> indent - |> annotations (op.PrimaryKey.GetAnnotations()) - |> unindent - |> ignore + let hasConstraints = + notNull op.PrimaryKey && (op.UniqueConstraints |> Seq.isEmpty |> not) && (op.ForeignKeys |> Seq.isEmpty |> not) - op.UniqueConstraints |> Seq.iter(writeUniqueConstraint) - op.ForeignKeys |> Seq.iter(writeForeignKeyConstraint) + if hasConstraints then - sb - |> unindent - |> appendLine ") " + sb |> append "," |> appendLine "constraints =" + |> indent + |> appendLine "(fun table -> " + |> indent + |> ignore + + if notNull op.PrimaryKey then + sb + |> append "table.PrimaryKey(" + |> append (op.PrimaryKey.Name |> code.Literal) + |> append ", " + |> append (op.PrimaryKey.Columns |> Seq.map(fun c -> map.[c]) |> Seq.toList |> code.Lambda) + |> append ")" + |> indent + |> annotations (op.PrimaryKey.GetAnnotations()) + |> appendLine " |> ignore" + |> unindent + |> ignore + + op.UniqueConstraints |> Seq.iter(writeUniqueConstraint) + op.ForeignKeys |> Seq.iter(writeForeignKeyConstraint) + + sb + |> unindent + |> appendLine ") " + else + sb sb |> appendLine ".CreateTable(" @@ -420,7 +417,6 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> unindent |> append ")" |> annotations (op.GetAnnotations()) - |> unindent let generateDropColumnOperation (op:DropColumnOperation) (sb:IndentedStringBuilder) = sb @@ -567,7 +563,7 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = let generateSqlOperation (op:SqlOperation) (sb:IndentedStringBuilder) = sb - |> appendLine (sprintf ".Sql(%s)" (op.Sql |> code.Literal)) + |> append (sprintf ".Sql(%s)" (op.Sql |> code.Literal)) |> indent |> annotations (op.GetAnnotations()) |> unindent @@ -577,28 +573,35 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = let parameters = seq { if notNull op.Schema then - yield sprintf "schema = %s, " (op.Schema |> code.Literal) + yield sprintf "schema = %s," (op.Schema |> code.Literal) - yield sprintf "table = %s, " (op.Table |> code.Literal) + yield sprintf "table = %s," (op.Table |> code.Literal) if op.Columns.Length = 1 then - yield sprintf "column = %s, " (op.Columns.[0] |> code.Literal) + yield sprintf "column = %s," (op.Columns.[0] |> code.Literal) else - yield sprintf "columns = %s, " (op.Columns |> code.Literal) + yield sprintf "columns = %s," (op.Columns |> code.Literal) let length0 = op.Values.GetLength(0) let length1 = op.Values.GetLength(1) - if length0 = 1 && length1 = 1 then - yield sprintf "value = %s" (op.Values.[0,0] |> code.UnknownLiteral) - elif length0 = 1 then - yield sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal) - elif length1 = 1 then - let arr = op.Values |> toOnedimensionalArray true - let lines = code.Literal(arr, true) - yield sprintf "values = %s" lines - else - yield sprintf "values = %s" (op.Values |> code.Literal) + let valuesArray = + if length0 = 1 && length1 = 1 then + sprintf "value = %s :> obj" (op.Values.[0,0] |> code.UnknownLiteral) + elif length0 = 1 then + sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal) + elif length1 = 1 then + let arr = op.Values |> toOnedimensionalArray true + let lines = code.Literal(arr, true) + sprintf "values = %s" lines + else + sprintf "values = %s" (op.Values |> code.Literal) + // Every item in the array needs to be downcast to obj + // Possibly a tidier way of doing this? + yield (valuesArray + .Replace(";", " :> obj;") + .Replace(" |]", ":> obj |]") + .Replace("null :> obj", "null")) } sb @@ -606,7 +609,7 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> indent |> appendLines parameters false |> unindent - |> appendLine ")" + |> append ")" let generateDeleteDataOperation (op:DeleteDataOperation) (sb:IndentedStringBuilder) = let parameters = @@ -741,6 +744,6 @@ type FSharpMigrationOperationGenerator (code : ICSharpHelper) = |> ignore ) - interface Microsoft.EntityFrameworkCore.Migrations.Design.ICSharpMigrationOperationGenerator with + interface ICSharpMigrationOperationGenerator with member this.Generate(builderName, operations, builder) = generate builderName operations builder diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs index cd93c6d..3e3bfc5 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs @@ -1,271 +1,56 @@ -namespace EntityFrameworkCore.FSharp.Migrations.Design +namespace EntityFrameworkCore.FSharp.Migrations.Design open System + +open Microsoft.EntityFrameworkCore.Design open Microsoft.EntityFrameworkCore.Metadata -open Microsoft.EntityFrameworkCore.Metadata.Internal -open Microsoft.EntityFrameworkCore.Migrations.Operations -open Microsoft.EntityFrameworkCore.Internal +open Microsoft.EntityFrameworkCore.Infrastructure +open Microsoft.EntityFrameworkCore.Migrations.Design open EntityFrameworkCore.FSharp.EntityFrameworkExtensions open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities -open Microsoft.EntityFrameworkCore.Infrastructure -open Microsoft.EntityFrameworkCore.Migrations.Design -open Microsoft.EntityFrameworkCore.Storage -open Microsoft.EntityFrameworkCore.Storage.ValueConversion -open Microsoft.EntityFrameworkCore.ChangeTracking.Internal -open EntityFrameworkCore.FSharp.SharedTypeExtensions -type FSharpMigrationsGenerator(dependencies, fSharpDependencies : FSharpMigrationsGeneratorDependencies) = +type FSharpMigrationsGeneratorDependencies + ( + fSharpHelper : ICSharpHelper, + fSharpMigrationOperationGenerator : ICSharpMigrationOperationGenerator, + fSharpSnapshotGenerator : ICSharpSnapshotGenerator + ) = + + member __.FSharpHelper = fSharpHelper + member __.FSharpMigrationOperationGenerator = fSharpMigrationOperationGenerator + member __.FSharpSnapshotGenerator = fSharpSnapshotGenerator + +type FSharpMigrationsGenerator(dependencies, fSharpDependencies : FSharpMigrationsGeneratorDependencies) = inherit MigrationsCodeGenerator(dependencies) let code = fSharpDependencies.FSharpHelper let generator = fSharpDependencies.FSharpMigrationOperationGenerator let snapshot = fSharpDependencies.FSharpSnapshotGenerator - let getColumnNamespaces (columnOperation: ColumnOperation) = - let ns = getNamespaces columnOperation.ClrType - - let ns' = - if columnOperation :? AlterColumnOperation then - (columnOperation :?> AlterColumnOperation).OldColumn.ClrType |> getNamespaces - else - Seq.empty - - ns |> Seq.append ns' - - let findValueConverter (property: IProperty) = - let coreType = - property.[CoreAnnotationNames.TypeMapping] :?> CoreTypeMapping - - if isNull coreType then - dependencies.RelationalTypeMappingSource.FindMapping(property).Converter - else - coreType.Converter - - let getAnnotationNamespaces (items: IAnnotatable seq) = - let ignoredAnnotations = - [ - CoreAnnotationNames.NavigationCandidates - CoreAnnotationNames.AmbiguousNavigations - CoreAnnotationNames.InverseNavigations - ChangeDetector.SkipDetectChangesAnnotation - CoreAnnotationNames.OwnedTypes - CoreAnnotationNames.ChangeTrackingStrategy - CoreAnnotationNames.BeforeSaveBehavior - CoreAnnotationNames.AfterSaveBehavior - CoreAnnotationNames.TypeMapping - CoreAnnotationNames.ValueComparer - CoreAnnotationNames.KeyValueComparer - CoreAnnotationNames.StructuralValueComparer - CoreAnnotationNames.ConstructorBinding - CoreAnnotationNames.NavigationAccessMode - CoreAnnotationNames.PropertyAccessMode - CoreAnnotationNames.ProviderClrType - CoreAnnotationNames.ValueConverter - CoreAnnotationNames.ValueGeneratorFactory - CoreAnnotationNames.DefiningQuery - CoreAnnotationNames.QueryFilter - RelationalAnnotationNames.CheckConstraints - ] - - let ignoreAnnotationTypes = - [ - RelationalAnnotationNames.DbFunction - RelationalAnnotationNames.SequencePrefix - ] - - let getProviderType (annotatable: IAnnotatable) (t: Type) = - match annotatable with - | :? IProperty -> - let p = annotatable :?> IProperty - if (t |> unwrapNullableType) = (p.ClrType |> unwrapNullableType) then - let valueConverter = findValueConverter p - - if isNull valueConverter then - t - else - valueConverter.ProviderClrType - else - t - | _ -> t - - items - |> Seq.collect (fun i -> - i.GetAnnotations() - |> Seq.map(fun a -> {| Annotatable = i; Annotation = a|})) - |> Seq.filter (fun a -> a.Annotation.Value |> notNull) - |> Seq.filter (fun a -> (ignoredAnnotations |> List.contains a.Annotation.Name) |> not) - |> Seq.filter (fun a -> - ignoreAnnotationTypes - |> Seq.exists (fun p -> a.Annotation.Name.StartsWith(p, StringComparison.Ordinal)) - |> not) - |> Seq.collect (fun a -> getProviderType a.Annotatable (a.Annotation.Value.GetType()) |> getNamespaces) - |> Seq.toList - - let getAnnotatables (ops: MigrationOperation seq) : IAnnotatable seq = - - let list = ops |> Seq.map toAnnotatable |> ResizeArray - - ops - |> Seq.filter(fun o -> o :? CreateTableOperation) - |> Seq.map(fun o -> o :?> CreateTableOperation) - |> Seq.iter(fun c -> - c.Columns |> Seq.map(fun o -> o :> IAnnotatable) |> list.AddRange - - if c.PrimaryKey |> notNull then - (c.PrimaryKey :> IAnnotatable) |> list.Add - - c.UniqueConstraints |> Seq.map(fun o -> o :> IAnnotatable) |> list.AddRange - c.ForeignKeys |> Seq.map(fun o -> o :> IAnnotatable) |> list.AddRange - ) - - list |> Seq.cast - - let getAnnotatablesByModel (model : IModel) = - - let e = - (model.GetEntityTypes()) - |> Seq.collect (fun e -> - - (toAnnotatable e) - :: (e.GetProperties() |> Seq.map toAnnotatable |> Seq.toList) - @ (e.GetKeys() |> Seq.map toAnnotatable |> Seq.toList) - @ (e.GetForeignKeys() |> Seq.map toAnnotatable |> Seq.toList) - @ (e.GetIndexes() |> Seq.map toAnnotatable |> Seq.toList) - ) - |> Seq.toList - - (toAnnotatable model) :: e - - - let getOperationNamespaces (ops: MigrationOperation seq) = - let columnOperations = - ops - |> Seq.filter(fun o -> o :? ColumnOperation) - |> Seq.map(fun o -> o :?> ColumnOperation) - |> Seq.collect(getColumnNamespaces) - - let columnsInCreateTableOperations = - ops - |> Seq.filter(fun o -> o :? CreateTableOperation) - |> Seq.map(fun o -> o :?> CreateTableOperation) - |> Seq.collect(fun o -> o.Columns) - |> Seq.collect(getColumnNamespaces) - - let insertUpdateDeleteNamespaces = - let getDataNamespaces (values: obj[,]) = - seq { - for row in 0..values.GetLength(0) do - for col in 0..values.GetLength(1) do - let value = values.[row, col] - if isNull value |> not then - for ns' in value.GetType().GetNamespaces() do - ns' - } - - let insert = - ops - |> Seq.filter(fun o -> o :? InsertDataOperation) - |> Seq.map(fun o -> (o :?> InsertDataOperation).Values) - - let update = - ops - |> Seq.filter(fun o -> o :? UpdateDataOperation) - |> Seq.collect(fun o -> - let o' = (o :?> UpdateDataOperation) - [| o'.KeyValues; o'.Values|]) - - let delete = - ops - |> Seq.filter(fun o -> o :? DeleteDataOperation) - |> Seq.map(fun o -> (o :?> DeleteDataOperation).KeyValues) - - insert - |> Seq.append update - |> Seq.append delete - |> Seq.collect (fun o -> getDataNamespaces o) - - let annotatables = - ops - |> getAnnotatables - |> getAnnotationNamespaces - - columnOperations - |> Seq.append columnsInCreateTableOperations - |> Seq.append insertUpdateDeleteNamespaces - |> Seq.append annotatables - - let getModelNamespaces (model: IModel) = - let namespaces = - model.GetEntityTypes() - |> Seq.collect (fun e -> - e.AsEntityType().GetDeclaredProperties() - |> Seq.collect (fun p -> - let converter = findValueConverter p - let ns = - if converter |> isNull || - converter.ProviderClrType |> isNull then - p.ClrType - else - converter.ProviderClrType - getNamespaces ns)) - |> Seq.toList - - let annotationNamespaces = model |> getAnnotatablesByModel |> getAnnotationNamespaces - - namespaces @ annotationNamespaces - - let writeCreateTableType (sb: IndentedStringBuilder) (op:CreateTableOperation) = - sb - |> appendEmptyLine - |> append "type private " |> append op.Name |> appendLine "Table = {" - |> indent - |> appendLines (op.Columns |> Seq.map (fun c -> sprintf "%s: OperationBuilder" c.Name)) false - |> unindent - |> appendLine "}" - |> ignore - - let createTypesForOperations (operations: MigrationOperation seq) (sb: IndentedStringBuilder) = - operations - |> Seq.filter(fun op -> (op :? CreateTableOperation)) - |> Seq.map(fun op -> (op :?> CreateTableOperation)) - |> Seq.iter(fun op -> op |> writeCreateTableType sb) - sb - - let getAllNamespaces (operations: MigrationOperation seq) = - let defaultNamespaces = - seq { - "System" - "System.Collections.Generic" - "Microsoft.EntityFrameworkCore" - "Microsoft.EntityFrameworkCore.Infrastructure" - "Microsoft.EntityFrameworkCore.Metadata" - "Microsoft.EntityFrameworkCore.Migrations" - "Microsoft.EntityFrameworkCore.Migrations.Operations" - "Microsoft.EntityFrameworkCore.Migrations.Operations.Builders" - "Microsoft.EntityFrameworkCore.Storage.ValueConversion" - } - - let allOperationNamespaces = operations |> getOperationNamespaces - - let namespaces = - allOperationNamespaces - |> Seq.append defaultNamespaces - |> Seq.toList - |> sortNamespaces - |> Seq.distinct - - namespaces + // Due to api shape we're currently forced to work around the fact EF expects 2 files per migration + let mutable tempUpOperations = list.Empty + let mutable tempDownOperations = list.Empty + let mutable tempMigrationName = String.Empty - let generateMigration (migrationNamespace) (migrationName) (migrationId: string) (contextType:Type) (upOperations) (downOperations) (model) = + member private this.GenerateMigrationImpl (migrationNamespace) (migrationName) (migrationId: string) (contextType:Type) (upOperations) (downOperations) (model) = let sb = IndentedStringBuilder() let allOperations = (upOperations |> Seq.append downOperations) + + let operationNamespaces = this.GetNamespaces allOperations + let namespaces = - allOperations - |> getAllNamespaces + [ "Microsoft.EntityFrameworkCore" + "Microsoft.EntityFrameworkCore.Infrastructure" + "Microsoft.EntityFrameworkCore.Metadata" + "Microsoft.EntityFrameworkCore.Migrations" + "Microsoft.EntityFrameworkCore.Storage.ValueConversion" ] + |> Seq.append operationNamespaces |> Seq.append [contextType.Namespace] |> Seq.filter (isNull >> not) + |> Seq.toList + |> sortNamespaces sb |> appendAutoGeneratedTag @@ -273,56 +58,64 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies : FSharpMigratio |> appendEmptyLine |> writeNamespaces namespaces |> appendEmptyLine - |> createTypesForOperations allOperations // This will eventually become redundant with anon record types - |> appendEmptyLine - |> append "[ append (contextType |> code.Reference) |> appendLine ">)>]" - |> append "[ append (migrationId |> code.Literal) |> appendLine ")>]" - |> append "type " |> append (migrationName |> code.Identifier) |> appendLine "() =" + |> appendLine (sprintf "[)>]" (contextType |> code.Reference)) + |> appendLine (sprintf "[]" (migrationId |> code.Literal)) + |> appendLine (sprintf "type %s() =" (migrationName |> code.Identifier)) |> indent |> appendLine "inherit Migration()" |> appendEmptyLine |> appendLine "override this.Up(migrationBuilder:MigrationBuilder) =" |> indent |> ignore - + generator.Generate("migrationBuilder", upOperations, sb) - sb + sb |> appendEmptyLine |> unindent |> appendLine "override this.Down(migrationBuilder:MigrationBuilder) =" |> indent |> ignore - + + let sbLengthBeforeDown = sb.Length + generator.Generate("migrationBuilder", downOperations, sb) + // F# requires an explicit close to the function if no down operations are found. + if sb.Length = sbLengthBeforeDown then + sb + |> appendLine "()" + |> ignore + sb |> unindent - |> appendEmptyLine + |> appendEmptyLine |> appendLine "override this.BuildTargetModel(modelBuilder: ModelBuilder) =" - |> indent - |> ignore - + |> indent + |> ignore + snapshot.Generate("modelBuilder", model, sb) sb |> appendEmptyLine |> string - let generateSnapshot (modelSnapshotNamespace: string) (contextType: Type) (modelSnapshotName: string) (model: IModel) = + member private this.GenerateSnapshotImpl (modelSnapshotNamespace: string) (contextType: Type) (modelSnapshotName: string) (model: IModel) = let sb = IndentedStringBuilder() let defaultNamespaces = seq { - yield "System" - yield "Microsoft.EntityFrameworkCore" - yield "Microsoft.EntityFrameworkCore.Infrastructure" - yield "Microsoft.EntityFrameworkCore.Metadata" - yield "Microsoft.EntityFrameworkCore.Migrations" - yield "Microsoft.EntityFrameworkCore.Storage.ValueConversion" + "System" + "Microsoft.EntityFrameworkCore" + "Microsoft.EntityFrameworkCore.Infrastructure" + "Microsoft.EntityFrameworkCore.Metadata" + "Microsoft.EntityFrameworkCore.Migrations" + "Microsoft.EntityFrameworkCore.Storage.ValueConversion" if contextType.Namespace |> String.IsNullOrEmpty |> not then - yield contextType.Namespace + contextType.Namespace } |> Seq.toList - let modelNamespaces = model |> getModelNamespaces + let modelNamespaces = + this.GetNamespaces model + |> Seq.toList let namespaces = (defaultNamespaces @ modelNamespaces) @@ -330,12 +123,13 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies : FSharpMigratio |> Seq.distinct sb + |> appendAutoGeneratedTag |> append "namespace " |> appendLine (code.Namespace [|modelSnapshotNamespace|]) |> appendEmptyLine |> writeNamespaces namespaces |> appendEmptyLine - |> append "[ append (contextType |> code.Reference) |> appendLine ">)>]" - |> append "type " |> append (modelSnapshotName |> code.Identifier) |> appendLine "() =" + |> appendLine (sprintf "[)>]" (code.Reference contextType)) + |> appendLine (sprintf "type %s() =" (code.Identifier modelSnapshotName)) |> indent |> appendLine "inherit ModelSnapshot()" |> appendEmptyLine |> appendLine "override this.BuildModel(modelBuilder: ModelBuilder) =" @@ -343,32 +137,28 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies : FSharpMigratio |> ignore snapshot.Generate("modelBuilder", model, sb) - + sb |> appendEmptyLine |> unindent |> string - // Due to api shape we're currently forced to work around the fact EF expects 2 files per migration - let mutable tempUpOperations = list.Empty - let mutable tempDownOperations = list.Empty - let mutable tempMigrationName = String.Empty - override __.Language with get() = "F#" override __.FileExtension with get() = ".fs" // Defined in the order of when it's called during migration add override this.GenerateMigration (migrationNamespace, migrationName, upOperations, downOperations) = tempUpOperations <- Seq.toList upOperations - tempDownOperations <- Seq.toList downOperations + tempDownOperations <- Seq.toList downOperations tempMigrationName <- migrationName "// intentionally empty" - - override this.GenerateMetadata (migrationNamespace, contextType, migrationName, migrationId, targetModel) = + + override this.GenerateMetadata (migrationNamespace, contextType, migrationName, migrationId, targetModel) = if tempMigrationName = migrationName then - generateMigration migrationNamespace migrationName migrationId contextType tempUpOperations tempDownOperations targetModel - else + this.GenerateMigrationImpl migrationNamespace migrationName migrationId contextType tempUpOperations tempDownOperations targetModel + else invalidOp "Migration isn't the same as previously saved during GenerateMigration, DEV: did the order of operations change?" - override this.GenerateSnapshot (modelSnapshotNamespace, contextType, modelSnapshotName, model) = - generateSnapshot modelSnapshotNamespace contextType modelSnapshotName model + override this.GenerateSnapshot (modelSnapshotNamespace, contextType, modelSnapshotName, model) = + this.GenerateSnapshotImpl modelSnapshotNamespace contextType modelSnapshotName model + diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGeneratorDependencies.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGeneratorDependencies.fs deleted file mode 100644 index aa1eb78..0000000 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGeneratorDependencies.fs +++ /dev/null @@ -1,37 +0,0 @@ -namespace EntityFrameworkCore.FSharp.Migrations.Design - -open System -open System.Collections.Generic -open Microsoft.EntityFrameworkCore.Metadata -open Microsoft.EntityFrameworkCore.Metadata.Internal -open Microsoft.EntityFrameworkCore.Migrations.Operations -open Microsoft.EntityFrameworkCore.Internal - -open EntityFrameworkCore.FSharp.EntityFrameworkExtensions -open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities -open EntityFrameworkCore.FSharp.Internal -open Microsoft.EntityFrameworkCore.Infrastructure -open Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal -open Microsoft.EntityFrameworkCore.Design -open Microsoft.EntityFrameworkCore.Migrations.Design -open Microsoft.EntityFrameworkCore.Design - -type FSharpMigrationsGeneratorDependencies - ( - fSharpHelper : ICSharpHelper, - fSharpMigrationOperationGenerator : ICSharpMigrationOperationGenerator, - fSharpSnapshotGenerator : ICSharpSnapshotGenerator - ) = - - member this.FSharpHelper = fSharpHelper - member this.FSharpMigrationOperationGenerator = fSharpMigrationOperationGenerator - member this.FSharpSnapshotGenerator = fSharpSnapshotGenerator - - member this.With (fSharpHelper : ICSharpHelper) = - FSharpMigrationsGeneratorDependencies (fSharpHelper, this.FSharpMigrationOperationGenerator, this.FSharpSnapshotGenerator) - - member this.With (fSharpMigrationOperationGenerator : ICSharpMigrationOperationGenerator) = - FSharpMigrationsGeneratorDependencies (this.FSharpHelper, fSharpMigrationOperationGenerator, this.FSharpSnapshotGenerator) - - member this.With (fSharpSnapshotGenerator : ICSharpSnapshotGenerator) = - FSharpMigrationsGeneratorDependencies (this.FSharpHelper, this.FSharpMigrationOperationGenerator, fSharpSnapshotGenerator) \ No newline at end of file diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs index 05e9c5c..434a497 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs @@ -2,23 +2,24 @@ namespace EntityFrameworkCore.FSharp.Migrations.Design open System open System.Collections.Generic -open Microsoft.EntityFrameworkCore -open Microsoft.EntityFrameworkCore.Metadata -open Microsoft.EntityFrameworkCore.Internal open EntityFrameworkCore.FSharp.SharedTypeExtensions open EntityFrameworkCore.FSharp.EntityFrameworkExtensions open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities +open EntityFrameworkCore.FSharp.Utilities + +open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.Metadata open Microsoft.EntityFrameworkCore.Infrastructure open Microsoft.EntityFrameworkCore.Metadata.Internal -open Microsoft.EntityFrameworkCore.Storage.ValueConversion open Microsoft.EntityFrameworkCore.Design open Microsoft.EntityFrameworkCore.Storage -open Microsoft.EntityFrameworkCore.ChangeTracking.Internal -type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalTypeMappingSource) = +type FSharpSnapshotGenerator (code : ICSharpHelper, + mappingSource : IRelationalTypeMappingSource, + annotationCodeGenerator: IAnnotationCodeGenerator) = - let getAnnotations (o:IAnnotatable) = + let getAnnotations (o: IAnnotatable) = ResizeArray (o.GetAnnotations()) let appendLineIfTrue truth value b = @@ -30,81 +31,33 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT let appendIfTrue truth value b = if truth then b |> append value - else + else b let findValueConverter (p:IProperty) = - let mapping = findMapping p - - if isNull mapping then p.GetValueConverter() else mapping.Converter - - let generateFluentApiForAnnotation (annotations: IAnnotation ResizeArray) (annotationName:string) (annotationValueFunc: (IAnnotation -> obj) option) (fluentApiMethodName:string) (genericTypesFunc: (IAnnotation -> IReadOnlyList)option) (sb:IndentedStringBuilder) = - - let annotationValueFunc' = - match annotationValueFunc with - | Some a -> a - | None -> (fun a -> if isNull a then null else a.Value) - - let annotation = annotations |> Seq.tryFind (fun a -> a.Name = annotationName) - let annotationValue = annotation |> Option.map annotationValueFunc' - - let genericTypesFunc' = - match genericTypesFunc with - | Some a -> a - | None -> (fun _ -> List() :> _) - - let genericTypes = annotation |> Option.map genericTypesFunc' - let hasGenericTypes = - match genericTypes with - | Some gt -> ((gt |> Seq.isEmpty |> not) && (gt |> Seq.forall(isNull >> not))) - | None -> false - - if (annotationValue.IsSome && (annotationValue.Value |> isNull |> not)) || hasGenericTypes then - sb - |> appendEmptyLine - |> append "." - |> append fluentApiMethodName - |> ignore - - if hasGenericTypes then - sb - |> append "<" - |> append (String.Join(",", (genericTypes.Value |> Seq.map(code.Reference)))) - |> append ">" - |> ignore - - sb - |> append "(" - |> ignore - - if annotationValue.IsSome && annotationValue.Value |> notNull then - sb |> append (annotationValue.Value |> code.UnknownLiteral) |> ignore - - sb - |> append ")" - |> ignore - - annotation.Value |> annotations.Remove |> ignore - - sb - - let sort (entityTypes:IEntityType list) = - let entityTypeGraph = new Multigraph() + let pValueConverter = p.GetValueConverter() + if p.GetValueConverter() |> isNull then + let typeMapping = p.FindTypeMapping() + + if typeMapping |> isNull then + let mapping = mappingSource.FindMapping(p) + if mapping |> isNull then + None + elif mapping.Converter |> isNull then + None + else mapping.Converter |> Some + elif typeMapping.Converter |> isNull then None + else typeMapping.Converter |> Some + else pValueConverter |> Some + + let sort (entityTypes:IEntityType seq) = + let entityTypeGraph = Multigraph() entityTypeGraph.AddVertices(entityTypes) - entityTypes - |> Seq.filter(fun e -> e.BaseType |> isNull |> not) - |> Seq.iter(fun e -> entityTypeGraph.AddEdge(e.BaseType, e, 0)) - entityTypeGraph.TopologicalSort() |> Seq.toList + |> Seq.filter(fun e -> e.BaseType |> isNull |> not) + |> Seq.iter (fun e -> entityTypeGraph.AddEdge(e.BaseType, e, 0)) - let ignoreAnnotationTypes (annotations:IAnnotation ResizeArray) (annotation:string) (sb:IndentedStringBuilder) = - - let annotationsToRemove = - annotations |> Seq.filter (fun a -> a.Name.StartsWith(annotation, StringComparison.OrdinalIgnoreCase)) |> Seq.toList - - annotationsToRemove |> Seq.iter (annotations.Remove >> ignore) - - sb + entityTypeGraph.TopologicalSort() |> Seq.toList let generateAnnotation (annotation:IAnnotation) (sb:IndentedStringBuilder) = let name = annotation.Name |> code.Literal @@ -115,106 +68,125 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT |> appendEmptyLine |> ignore - let generateAnnotations (annotations:IAnnotation ResizeArray) (sb:IndentedStringBuilder) = + let generateAnnotations (annotations: IAnnotation seq) (sb:IndentedStringBuilder) = annotations - |> Seq.iter(fun a -> - sb - |> generateAnnotation a) + |> Seq.iter(fun a -> sb |> generateAnnotation a) sb - let getMappingHints (hints : ConverterMappingHints) = - seq { - if hints.Size.HasValue then - yield (sprintf "size = Nullable(%s)" (hints.Size.Value |> code.Literal)) - if hints.Precision.HasValue then - yield (sprintf "precision = Nullable(%s)" (hints.Precision.Value |> code.Literal)) - if hints.Scale.HasValue then - yield (sprintf "scale = Nullable(%s)" (hints.Scale.Value |> code.Literal)) - if hints.IsUnicode.HasValue then - yield (sprintf "unicode = Nullable(%s)" (hints.IsUnicode.Value |> code.Literal)) - - if hints :? RelationalConverterMappingHints then - let relationalHints = hints :?> RelationalConverterMappingHints - if relationalHints.IsFixedLength.HasValue then - yield (sprintf "fixedLength = Nullable(%s)" (relationalHints.IsFixedLength.Value |> code.Literal)) - } - - let genPropertyAnnotations (p:IProperty) (sb:IndentedStringBuilder) = - let annotations = getAnnotations p - let valueConverter = p |> findValueConverter - - if valueConverter |> notNull && valueConverter.MappingHints |> notNull then - let hints = valueConverter.MappingHints - let storeType = valueConverter.ProviderClrType |> code.Reference - let createStoreType = sprintf "(fun v -> Unchecked.defaultof<%s>)" storeType + let generateFluentApiForDefaultValue (property: IProperty) (sb: IndentedStringBuilder) = + match property.GetDefaultValue() |> Option.ofObj with + | Some defaultValue -> + let valueConverter = + if defaultValue <> (box DBNull.Value) then + let valueConverter = property.GetValueConverter() |> Option.ofObj + let typeMap = + if property.FindTypeMapping() |> Option.ofObj |> Option.isSome then + property.FindTypeMapping() |> Option.ofObj + else (mappingSource.FindMapping(property) :> CoreTypeMapping) |> Option.ofObj + + match valueConverter, typeMap with + | Some v, _ -> v |> Option.ofObj + | None, Some t -> t.Converter |> Option.ofObj + | _ -> None + else None + + let appendValueConverter sb = + let value = + match valueConverter with + | Some vc -> vc.ConvertToProvider.Invoke(defaultValue) + | None -> defaultValue - let mappingHints = hints |> getMappingHints |> join ", " + sb + |> append (code.UnknownLiteral(value)) sb |> appendEmptyLine - |> append (sprintf ".HasConversion(ValueConverter<%s,%s>(%s, %s), ConverterMappingHints(%s))" storeType storeType createStoreType createStoreType mappingHints) - |> ignore - - let consumed = - annotations - |> Seq.filter(fun a -> a.Name = CoreAnnotationNames.ValueConverter || a.Name = CoreAnnotationNames.ProviderClrType) - |> Seq.toList - - consumed - |> Seq.iter (annotations.Remove >> ignore) - - let getValueFunc (valueConverter: ValueConverter) (a:IAnnotation) = - if valueConverter |> notNull then - valueConverter.ConvertToProvider.Invoke(a.Value) - else - a.Value + |> append ".HasDefaultValue(" + |> appendValueConverter + |> append ")" + | None -> sb + + let genPropertyAnnotations (p:IProperty) (sb:IndentedStringBuilder) = + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(p.GetAnnotations()) + |> annotationsToDictionary - let columnType (p: IProperty) = if p.GetColumnType() |> isNull then mappingSource.GetMapping(p).StoreType |> code.Literal - else + else p.GetColumnType() |> code.Literal + let removeAnnotation (annotation: string) sb = + annotations.Remove(annotation) |> ignore + sb + + let generateFluentApiForMaxLength sb = + match p.GetMaxLength() |> Option.ofNullable with + | Some i -> + sb + |> appendEmptyLine + |> append ".HasMaxLength(" + |> append (code.Literal(i)) + |> append ")" + | None -> sb + + let generateFluentApiForPrecisionAndScale (sb: IndentedStringBuilder) = + match p.GetPrecision() |> Option.ofNullable with + | Some i -> + sb + |> appendEmptyLine + |> append $".HasPrecision({code.UnknownLiteral(i)}" + |> ignore + + if p.GetScale().HasValue then + sb + |> append $", {code.UnknownLiteral(p.GetScale().Value)}" + |> ignore + + annotations.Remove(CoreAnnotationNames.Precision) |> ignore + + sb + |> append ")" + | None -> sb + + let generateFluentApiForUnicode sb = + match p.IsUnicode() |> Option.ofNullable with + | Some b -> + sb + |> appendEmptyLine + |> append ".IsUnicode(" + |> append (code.Literal(b)) + |> append ")" + | None -> sb + sb - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.ColumnName None "HasColumnName" None + |> generateFluentApiForMaxLength + |> generateFluentApiForPrecisionAndScale + |> generateFluentApiForUnicode + |> appendEmptyLine + |> append "." + |> append "HasColumnType" + |> append "(" + |> append (columnType p) + |> append ")" + |> removeAnnotation RelationalAnnotationNames.ColumnType + |> generateFluentApiForDefaultValue p + |> removeAnnotation RelationalAnnotationNames.DefaultValue |> ignore - sb - |> appendEmptyLine - |> append "." - |> append "HasColumnType" - |> append "(" - |> append (columnType p) - |> append ")" - |> ignore + annotationCodeGenerator.GenerateFluentApiCalls(p, annotations) + |> Seq.map code.Fragment + |> Seq.iter (fun m -> + sb + |> appendEmptyLine + |> append m + |> ignore) sb - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.DefaultValueSql None "HasDefaultValueSql" None - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.ComputedColumnSql None "HasComputedColumnSql" None - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.IsFixedLength None "IsFixedLength" None - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Comment None "HasComment" None - |> generateFluentApiForAnnotation annotations CoreAnnotationNames.MaxLength None "HasMaxLength" None - |> generateFluentApiForAnnotation annotations CoreAnnotationNames.Unicode None "IsUnicode" None - - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.DefaultValue (getValueFunc valueConverter |> Some) "HasDefaultValue" None - - |> ignoreAnnotationTypes annotations RelationalAnnotationNames.ColumnType - |> ignoreAnnotationTypes annotations CoreAnnotationNames.ValueGeneratorFactory - |> ignoreAnnotationTypes annotations CoreAnnotationNames.PropertyAccessMode - |> ignoreAnnotationTypes annotations CoreAnnotationNames.ChangeTrackingStrategy - |> ignoreAnnotationTypes annotations CoreAnnotationNames.BeforeSaveBehavior - |> ignoreAnnotationTypes annotations CoreAnnotationNames.AfterSaveBehavior - |> ignoreAnnotationTypes annotations CoreAnnotationNames.TypeMapping - |> ignoreAnnotationTypes annotations CoreAnnotationNames.ValueComparer - |> ignoreAnnotationTypes annotations CoreAnnotationNames.KeyValueComparer - |> ignoreAnnotationTypes annotations CoreAnnotationNames.StructuralValueComparer - |> ignoreAnnotationTypes annotations CoreAnnotationNames.ValueConverter - |> ignoreAnnotationTypes annotations CoreAnnotationNames.ProviderClrType - - |> generateAnnotations annotations + |> generateAnnotations annotations.Values |> append " |> ignore" let generateBaseType (funcId: string) (baseType: IEntityType) (sb:IndentedStringBuilder) = @@ -229,16 +201,18 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT let generateProperty (funcId:string) (p:IProperty) (sb:IndentedStringBuilder) = let isPropertyRequired = - let isNullable = - p.IsPrimaryKey() |> not || - p.ClrType |> isOptionType || - p.ClrType |> isNullableType + let isNullable = + not (p.IsPrimaryKey()) || + isOptionType p.ClrType || + isNullableType p.ClrType isNullable <> p.IsNullable let converter = findValueConverter p let clrType = - if isNull converter then p.ClrType else converter.ProviderClrType + match converter with + | Some c -> c.ProviderClrType + | None -> p.ClrType sb |> appendEmptyLine @@ -251,7 +225,10 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT |> indent |> appendLineIfTrue p.IsConcurrencyToken ".IsConcurrencyToken()" |> appendLineIfTrue isPropertyRequired ".IsRequired()" - |> appendLineIfTrue (p.ValueGenerated <> ValueGenerated.Never) (if p.ValueGenerated = ValueGenerated.OnAdd then ".ValueGeneratedOnAdd()" else if p.ValueGenerated = ValueGenerated.OnUpdate then ".ValueGeneratedOnUpdate()" else ".ValueGeneratedOnAddOrUpdate()" ) + |> appendLineIfTrue (p.ValueGenerated <> ValueGenerated.Never) + (if p.ValueGenerated = ValueGenerated.OnAdd then ".ValueGeneratedOnAdd()" + else if p.ValueGenerated = ValueGenerated.OnUpdate then ".ValueGeneratedOnUpdate()" + else ".ValueGeneratedOnAddOrUpdate()" ) |> genPropertyAnnotations p |> unindent @@ -261,7 +238,20 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT let generateKey (funcId: string) (key:IKey) (isPrimary:bool) (sb:IndentedStringBuilder) = - let annotations = getAnnotations key + let generateKeyAnnotations sb = + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(key.GetAnnotations()) + |> annotationsToDictionary + + annotationCodeGenerator.GenerateFluentApiCalls(key, annotations) + |> Seq.map code.Fragment + |> Seq.iter (fun m -> + sb + |> appendEmptyLine + |> append m + |> ignore) + + generateAnnotations annotations.Values sb sb |> appendEmptyLine @@ -271,12 +261,11 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT |> append (key.Properties |> Seq.map (fun p -> (p.Name |> code.Literal)) |> join ", ") |> append ")" |> indent - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Name Option.None "HasName" Option.None - |> generateAnnotations annotations - |> appendLine " |> ignore" + |> generateKeyAnnotations |> unindent + |> appendLine " |> ignore" - let generateKeys (funcId: string) (keys: IKey seq) (pk:IKey) (sb:IndentedStringBuilder) = + let generateKeys (funcId: string) (keys: IKey seq) (pk: IKey) (sb: IndentedStringBuilder) = if pk |> notNull then generateKey funcId pk true sb |> ignore @@ -285,11 +274,24 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT |> Seq.filter(fun k -> k <> pk && (k.GetReferencingForeignKeys() |> Seq.isEmpty) && (getAnnotations k) |> Seq.isEmpty |> not) |> Seq.iter (fun k -> generateKey funcId k false sb |> ignore) - sb + sb let generateIndex (funcId: string) (idx:IIndex) (sb:IndentedStringBuilder) = - let annotations = getAnnotations idx + let generateIndexAnnotations sb = + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(idx.GetAnnotations()) + |> annotationsToDictionary + + annotationCodeGenerator.GenerateFluentApiCalls(idx, annotations) + |> Seq.map code.Fragment + |> Seq.iter (fun m -> + sb + |> appendEmptyLine + |> append m + |> ignore) + + generateAnnotations annotations.Values sb sb |> appendEmptyLine @@ -299,9 +301,7 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT |> append ")" |> indent |> appendLineIfTrue idx.IsUnique ".IsUnique()" - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Name Option.None "HasName" Option.None - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Filter Option.None "HasFilter" Option.None - |> generateAnnotations annotations + |> generateIndexAnnotations |> appendLine " |> ignore" |> unindent |> ignore @@ -312,7 +312,7 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT sb let processDataItem (props : IProperty list) (sb:IndentedStringBuilder) (data : IDictionary) = - + let writeProperty isFirst (p : IProperty) = match data.TryGetValue p.Name with | true, value -> @@ -327,7 +327,7 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT () | _ -> () - + sb |> appendLine "({" |> indent |> ignore props |> Seq.head |> writeProperty true @@ -337,7 +337,7 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT () let processDataItems (data : IDictionary seq) (propsToOutput : IProperty list) (sb:IndentedStringBuilder) = - + (data |> Seq.head) |> processDataItem propsToOutput sb data @@ -348,161 +348,337 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT ) sb - member this.generatePropertyAnnotations = + let generateSequence (builderName: string) (sequence: ISequence) sb = + sb + |> appendEmptyLine + |> append builderName + |> append ".HasSequence" + |> ignore + + if sequence.Type <> Sequence.DefaultClrType then + sb + |> append "<" + |> append (code.Reference(sequence.Type)) + |> append ">" + |> ignore + + sb + |> append "(" + |> append (code.Literal(sequence.Name)) + |> ignore + + if String.IsNullOrEmpty(sequence.Schema) |> not + && sequence.Model.GetDefaultSchema() <> sequence.Schema then + sb + |> append ", " + |> append (code.Literal(sequence.Schema)) + |> ignore + + let appendStartValue sb = + if sequence.StartValue <> (Sequence.DefaultStartValue |> int64) then + sb + |> appendEmptyLine + |> append ".StartsAt(" + |> append (code.Literal(sequence.StartValue)) + |> append ")" + |> ignore + sb + + let appendIncrementBy sb = + if sequence.IncrementBy <> Sequence.DefaultIncrementBy then + sb + |> appendEmptyLine + |> append ".IncrementsBy(" + |> append (code.Literal(sequence.IncrementBy)) + |> append ")" + |> ignore + sb + + let appendMinValue sb = + if sequence.MinValue <> Sequence.DefaultMinValue then + sb + |> appendEmptyLine + |> append ".HasMin(" + |> append (code.Literal(sequence.MinValue)) + |> append ")" + |> ignore + sb + + let appendMaxValue sb = + if sequence.MaxValue <> Sequence.DefaultMaxValue then + sb + |> appendEmptyLine + |> append ".HasMax(" + |> append (code.Literal(sequence.MaxValue)) + |> append ")" + |> ignore + sb + + let appendIsCyclic sb = + if sequence.IsCyclic <> Sequence.DefaultIsCyclic then + sb + |> appendEmptyLine + |> append ".IsCyclic()" + |> ignore + sb + + sb + |> append ")" + |> indent + |> appendStartValue + |> appendIncrementBy + |> appendMinValue + |> appendMaxValue + |> appendIsCyclic + |> append " |> ignore" + |> ignore + + let removeAmbiguousAnnotations (annotations: Dictionary) annotationNameMatcher = + annotations + |> Seq.filter (fun kvp -> + match annotationNameMatcher kvp.Key with + | true -> + annotations.Remove(kvp.Key) |> ignore + true + | false -> false) + |> Seq.map (fun kvp -> kvp.Value) + + + + member this.generatePropertyAnnotations = genPropertyAnnotations - member this.generateEntityTypeAnnotations (funcId: string) (entityType:IEntityType) (sb:IndentedStringBuilder) = - let annotations = getAnnotations entityType + member this.generateCheckConstraints (builderName: string) (entityType:IEntityType) (sb:IndentedStringBuilder) = + let generateCheckConstraint (c: ICheckConstraint) sb = + let name = code.Literal c.Name + let sql = code.Literal c.Sql - let tryGetAnnotationByName (name:string) = - let a = annotations |> Seq.tryFind (fun a -> a.Name = name) + sb |> append (sprintf "%s.HasCheckConstraint(%s, %s) |> ignore" builderName name sql) + + entityType.GetCheckConstraints() + |> Seq.iter (fun c -> + sb + |> appendEmptyLine + |> generateCheckConstraint c + |> ignore) + + sb - match a with - | Some a' -> annotations.Remove(a') |> ignore - | None -> () + member this.generateEntityTypeAnnotations (builderName: string) (entityType:IEntityType) (sb:IndentedStringBuilder) = + let annotationList = entityType.GetAnnotations() |> ResizeArray - a + let annotations = + annotationCodeGenerator + .FilterIgnoredAnnotations(entityType.GetAnnotations()) + |> annotationsToDictionary - let tableNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.TableName - let schemaAnnotation = tryGetAnnotationByName RelationalAnnotationNames.Schema + let tryGetAnnotationByName (name:string) = + match annotations.TryGetValue name with + | true, a -> + annotations.Remove(name) |> ignore + Some a + | _ -> None let tableName = - match tableNameAnnotation with - | Some t -> t.Value |> string - | None -> getDisplayName entityType + match tryGetAnnotationByName RelationalAnnotationNames.TableName with + | Some t -> + if t.Value |> isNull then None else t.Value |> string |> Some + | None when entityType.BaseType |> isNull -> + let tableName = entityType.GetTableName() + if tableName |> isNull then None else tableName |> string |> Some + | _ -> None let hasSchema, schema = - match schemaAnnotation with + match tryGetAnnotationByName RelationalAnnotationNames.Schema with | Some s -> true, s.Value | None -> false, null - sb - |> appendEmptyLine - |> append funcId - |> append ".ToTable(" - |> append (tableName |> code.Literal) - |> appendIfTrue hasSchema (sprintf ",%A" schema) - |> append ") |> ignore" - |> appendEmptyLine - |> ignore + tableName + |> Option.iter (fun tableName -> + sb + |> appendEmptyLine + |> append builderName + |> append ".ToTable(" + |> append (tableName |> code.Literal) + |> appendIfTrue hasSchema (sprintf ",%A" schema) + |> append ") |> ignore" + |> appendEmptyLine + |> ignore + ) - let discriminatorPropertyAnnotation = - tryGetAnnotationByName CoreAnnotationNames.DiscriminatorProperty - let discriminatorValueAnnotation = - tryGetAnnotationByName CoreAnnotationNames.DiscriminatorValue + let viewName = + match tryGetAnnotationByName RelationalAnnotationNames.ViewName with + | Some t -> + t.Value |> Option.ofObj |> Option.map string + | None when entityType.BaseType |> Option.ofObj |> Option.isNone -> + entityType.GetViewName() |> Option.ofObj + | _ -> None - if discriminatorPropertyAnnotation.IsSome || discriminatorValueAnnotation.IsSome then + let hasViewSchema, viewSchema = + match tryGetAnnotationByName RelationalAnnotationNames.ViewSchema with + | Some s -> true, s.Value + | None -> false, null + + viewName + |> Option.iter (fun viewName -> sb |> appendEmptyLine - |> append funcId + |> append builderName + |> append ".ToView(" + |> append (code.Literal(viewName)) + |> appendIfTrue hasViewSchema $", {viewSchema}" + |> appendLine ") |> ignore" + |> ignore + ) + + let functionName = + match tryGetAnnotationByName RelationalAnnotationNames.FunctionName with + | Some f -> + f.Value |> Option.ofObj |> Option.map string + | None when entityType.BaseType |> Option.ofObj |> Option.isNone -> + entityType.GetFunctionName() |> Option.ofObj + | _ -> None + + functionName + |> Option.iter (fun functionName -> + sb + |> appendEmptyLine + |> append builderName + |> append ".ToFunction(" + |> append functionName + |> append ") |> ignore" + |> ignore + ) + + let discriminatorPropertyAnnotation = + annotationList |> Seq.tryFind (fun a -> a.Name = CoreAnnotationNames.DiscriminatorProperty) + + let discriminatorMappingCompleteAnnotation = + annotationList |> Seq.tryFind (fun a -> a.Name = CoreAnnotationNames.DiscriminatorMappingComplete) + + let discriminatorValueAnnotation = + annotationList |> Seq.tryFind (fun a -> a.Name = CoreAnnotationNames.DiscriminatorValue) + + let annotationAndValueNotNull (anno: IAnnotation option) = + match anno with + | Some a when a.Value |> isNull |> not -> true + | _ -> false + + if annotationAndValueNotNull discriminatorPropertyAnnotation + || annotationAndValueNotNull discriminatorMappingCompleteAnnotation + || annotationAndValueNotNull discriminatorValueAnnotation then + + sb + |> appendEmptyLine + |> append builderName |> append ".HasDiscriminator" |> ignore - match discriminatorPropertyAnnotation with - | Some a when notNull a.Value -> - let discriminatorProperty = entityType.FindProperty(string a.Value) + if annotationAndValueNotNull discriminatorPropertyAnnotation then + let discriminatorPropertyAnnotation = discriminatorPropertyAnnotation.Value + let discriminatorProperty = + entityType.FindProperty(discriminatorPropertyAnnotation.Value |> string) - let propertyClrType = - let valueConverter = findValueConverter discriminatorProperty - if notNull valueConverter then - makeNullable discriminatorProperty.IsNullable valueConverter.ProviderClrType - else - discriminatorProperty.ClrType + let propertyClrType = + match discriminatorProperty |> findValueConverter with + | Some c -> c.ProviderClrType |> makeNullable discriminatorProperty.IsNullable + | None -> discriminatorProperty.ClrType sb |> append "<" - |> append (code.Reference propertyClrType) + |> append (code.Reference(propertyClrType)) |> append ">(" - |> append (code.UnknownLiteral a.Value) + |> append (code.Literal(discriminatorPropertyAnnotation.Value |> string)) + |> append ")" + |> ignore + else + sb + |> append "()" + |> ignore + + if annotationAndValueNotNull discriminatorMappingCompleteAnnotation then + let value = discriminatorMappingCompleteAnnotation.Value + sb + |> append ".IsComplete(" + |> append (code.UnknownLiteral(value)) |> append ")" |> ignore - | _ -> - sb |> append "()" |> ignore - - match discriminatorValueAnnotation with - | Some a -> - let discriminatorProperty = - entityType.GetRootType().GetDiscriminatorProperty() + if annotationAndValueNotNull discriminatorValueAnnotation then + let discriminatorValueAnnotation = discriminatorValueAnnotation.Value + let discriminatorProperty = entityType.GetDiscriminatorProperty() + + let defaultValue = discriminatorValueAnnotation.Value let value = - if discriminatorProperty |> notNull then - let valueConverter = discriminatorProperty |> findValueConverter - if valueConverter |> notNull then - valueConverter.ConvertToProvider.Invoke(a.Value) - else - a.Value - else - a.Value + if discriminatorProperty |> isNull |> not then + match discriminatorProperty |> findValueConverter with + | Some c -> c.ConvertToProvider.Invoke(defaultValue) + | None -> defaultValue + else defaultValue sb - |> append (sprintf ".HasValue(%s) |> ignore" (value |> code.UnknownLiteral)) - |> appendEmptyLine + |> append ".HasValue(" + |> append (code.UnknownLiteral(value)) + |> append ")" |> ignore - | None -> - sb - |> append " |> ignore" - |> appendEmptyLine + + sb + |> appendLine " |> ignore" |> ignore - let commentAnnotation = tryGetAnnotationByName RelationalAnnotationNames.Comment + let fluentApiCalls = + annotationCodeGenerator.GenerateFluentApiCalls(entityType, annotations) - match commentAnnotation with - | Some c -> + if fluentApiCalls.Count > 0 || annotations.Count > 0 then sb - |> appendEmptyLine - |> append funcId - |> append "." - |> append "HasComment" - |> append "(" - |> append (c.Value |> code.UnknownLiteral) - |> appendLine ") |> ignore" - |> ignore - | None -> () - - let annotationsToRemove = - [| - CoreAnnotationNames.NavigationCandidates - CoreAnnotationNames.AmbiguousNavigations - CoreAnnotationNames.InverseNavigations - CoreAnnotationNames.NavigationAccessMode - CoreAnnotationNames.PropertyAccessMode - CoreAnnotationNames.ChangeTrackingStrategy - CoreAnnotationNames.ConstructorBinding - CoreAnnotationNames.DefiningQuery - CoreAnnotationNames.QueryFilter - RelationalAnnotationNames.CheckConstraints |] - - annotationsToRemove |> Seq.iter (tryGetAnnotationByName >> ignore) + |> appendEmptyLine + |> append builderName + |> indent + |> ignore - annotations - |> Seq.iter(fun a -> + fluentApiCalls + |> Seq.map code.Fragment + |> Seq.iter (fun m -> sb |> appendEmptyLine - |> append funcId - |> generateAnnotation a) + |> append m + |> ignore) + + generateAnnotations annotations.Values sb + |> appendLine " |> ignore" + |> unindent + |> ignore sb member private this.generateForeignKeyAnnotations (fk: IForeignKey) sb = - let annotations = getAnnotations fk + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(fk.GetAnnotations()) + |> annotationsToDictionary - sb - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.Name Option.None "HasConstraintName" Option.None - |> generateAnnotations annotations + annotationCodeGenerator.GenerateFluentApiCalls(fk, annotations) + |> Seq.map code.Fragment + |> Seq.iter (fun m -> + sb + |> appendEmptyLine + |> append m + |> ignore) + + generateAnnotations annotations.Values sb member private this.generateForeignKey funcId (fk: IForeignKey) sb = - let literalPropNames (properties: seq) = + let literalPropNames (properties: seq) = properties |> Seq.map (fun p -> p.Name |> code.Literal) if not fk.IsOwnership then - let dependent = - if isNull fk.DependentToPrincipal then - code.UnknownLiteral null - else + let dependent = + if isNull fk.DependentToPrincipal then + code.UnknownLiteral null + else fk.DependentToPrincipal.Name |> code.Literal sb @@ -612,7 +788,7 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT |> unindent member private this.generateForeignKeys funcId (foreignKeys: IForeignKey seq) sb = - foreignKeys + foreignKeys |> Seq.iter (fun fk -> this.generateForeignKey funcId fk sb |> ignore) sb @@ -654,15 +830,23 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT let declaration = match ownerNav with - | None -> + | None -> sprintf ".Entity(%s" (entityType.Name |> code.Literal) - | Some o -> - if ownership.IsUnique then + | Some o -> + if ownership.IsUnique then sprintf ".OwnsOne(%s, %s" (entityType.Name |> code.Literal) (o |> code.Literal) else sprintf ".OwnsMany(%s, %s" (entityType.Name |> code.Literal) (o |> code.Literal) - let funcId = "b" + let funcId = + if builderName.StartsWith("b", StringComparison.Ordinal) then + let mutable counter = 1 + match builderName.Length > 1, Int32.TryParse(builderName.[1..]) with + | true, (true, _) -> counter <- counter + 1 + | _ -> () + + "b" + if counter = 0 then "" else counter.ToString() + else "b" sb |> appendEmptyLine @@ -678,6 +862,7 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT | None -> generateKeys funcId (entityType |> getDeclaredKeys) (entityType |> findDeclaredPrimaryKey) |> generateIndexes funcId (entityType |> getDeclaredIndexes) |> this.generateEntityTypeAnnotations funcId entityType + |> this.generateCheckConstraints funcId entityType |> match ownerNav with | None -> id @@ -713,39 +898,73 @@ type FSharpSnapshotGenerator (code : ICSharpHelper, mappingSource : IRelationalT let relationships = entitiesToWrite - |> Seq.filter(fun e -> (e |> getDeclaredForeignKeys |> Seq.isEmpty |> not) || (e |> getDeclaredReferencingForeignKeys |> Seq.exists(fun fk -> fk.IsOwnership))) + |> Seq.filter(fun e -> + (e + |> getDeclaredForeignKeys + |> Seq.isEmpty + |> not) || (e |> getDeclaredReferencingForeignKeys |> Seq.exists(fun fk -> fk.IsOwnership))) relationships |> Seq.iter(fun e -> this.generateEntityTypeRelationships builderName e sb) sb - member private this.generate (builderName:string) (model:IModel) (sb:IndentedStringBuilder) = + interface Microsoft.EntityFrameworkCore.Migrations.Design.ICSharpSnapshotGenerator with + member this.Generate(builderName, model, sb) = + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(model.GetAnnotations()) + |> annotationsToDictionary - let annotations = getAnnotations model + let productVersion = model.GetProductVersion() - if annotations |> Seq.isEmpty |> not then - sb - |> append builderName - |> indent - |> generateFluentApiForAnnotation annotations RelationalAnnotationNames.DefaultSchema Option.None "HasDefaultSchema" Option.None - |> ignoreAnnotationTypes annotations RelationalAnnotationNames.DbFunction - |> ignoreAnnotationTypes annotations ChangeDetector.SkipDetectChangesAnnotation - |> ignoreAnnotationTypes annotations CoreAnnotationNames.ChangeTrackingStrategy - |> ignoreAnnotationTypes annotations CoreAnnotationNames.OwnedTypes - |> ignoreAnnotationTypes annotations RelationalAnnotationNames.CheckConstraints - |> generateAnnotations annotations - |> appendLine " |> ignore" - |> unindent - |> ignore + if annotations |> Seq.isEmpty |> not || productVersion |> isNull |> not then + sb + |> appendLine builderName + |> indent + |> ignore - let sortedEntities = - model.GetEntityTypes() - |> Seq.filter(fun et -> not (et.IsIgnoredByMigrations())) - |> Seq.toList - |> sort + let useOldBehavior = + match AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue23456") with + | true, enabled -> enabled + | false, _ -> false + + let annotationsToMatch = [ + ":ValueGenerationStrategy" + ":IdentityIncrement" + ":IdentitySeed" + ":HiLoSequenceName" + ":HiLoSequenceSchema" + ] + + let ambiguousAnnotations = + if useOldBehavior then Seq.empty + else + removeAmbiguousAnnotations + annotations + (fun n -> annotationsToMatch + |> Seq.exists (fun x -> n.EndsWith(x, StringComparison.Ordinal))) + + annotationCodeGenerator.GenerateFluentApiCalls(model, annotations) + |> Seq.map code.Fragment + |> Seq.iter (fun m -> + sb + |> appendEmptyLine + |> append m + |> ignore) - sb |> this.generateEntityTypes builderName sortedEntities |> ignore + let remainingAnnotations = + seq { + yield! annotations.Values + if productVersion |> isNull |> not then + yield Annotation(CoreAnnotationNames.ProductVersion, productVersion) :> _ + } - interface Microsoft.EntityFrameworkCore.Migrations.Design.ICSharpSnapshotGenerator with - member this.Generate(builderName, model, stringBuilder) = - this.generate builderName model stringBuilder + sb + |> generateAnnotations (remainingAnnotations |> Seq.append ambiguousAnnotations) + |> appendLine "|> ignore" + |> unindent + |> ignore + + for sequence in model.GetSequences() do + generateSequence builderName sequence sb + + this.generateEntityTypes builderName (model.GetEntityTypes() |> sort) sb |> ignore diff --git a/src/EFCore.FSharp/ScaffoldOptions.fs b/src/EFCore.FSharp/ScaffoldOptions.fs new file mode 100644 index 0000000..8b04796 --- /dev/null +++ b/src/EFCore.FSharp/ScaffoldOptions.fs @@ -0,0 +1,22 @@ +namespace EntityFrameworkCore.FSharp + +/// A type representing how scaffolded objects should be generated +type ScaffoldTypesAs = + /// Objects should be generated as a standard F# record + | RecordType + /// Objects should be generated similar to how a C# class behaves + | ClassType + +/// A type representing how nullable columns in scaffolded databases should be represented +type ScaffoldNullableColumnsAs = + /// A nullable column of type 'a should be represented as 'a option + | OptionTypes + /// A nullable column of type 'a should be represented as Nullable{'a} + | NullableTypes + +[] +type ScaffoldOptions() = + member val ScaffoldTypesAs = RecordType with get,set + member val ScaffoldNullableColumnsAs = OptionTypes with get,set + + static member Default = ScaffoldOptions() diff --git a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs index 8894130..f71c4bf 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs @@ -2,19 +2,17 @@ namespace EntityFrameworkCore.FSharp.Scaffolding open System open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.Design +open Microsoft.EntityFrameworkCore.Infrastructure open Microsoft.EntityFrameworkCore.Metadata +open Microsoft.EntityFrameworkCore.Metadata.Conventions open Microsoft.EntityFrameworkCore.Metadata.Internal -open Microsoft.EntityFrameworkCore.Internal open Microsoft.EntityFrameworkCore.Scaffolding +open Microsoft.EntityFrameworkCore.Scaffolding.Internal open EntityFrameworkCore.FSharp.EntityFrameworkExtensions open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities open EntityFrameworkCore.FSharp.Internal -open Microsoft.EntityFrameworkCore.Infrastructure -open Microsoft.EntityFrameworkCore.Design -open Microsoft.EntityFrameworkCore.Diagnostics -open Microsoft.EntityFrameworkCore.Metadata.Conventions -open Microsoft.EntityFrameworkCore.ChangeTracking.Internal #nowarn "0044" @@ -22,22 +20,15 @@ open System.Collections.Generic open EntityFrameworkCore.FSharp type FSharpDbContextGenerator - (providerCodeGenerators: IProviderConfigurationCodeGenerator seq, + (providerCodeGenerator: IProviderConfigurationCodeGenerator, annotationCodeGenerator : IAnnotationCodeGenerator, code : ICSharpHelper) = - let providerCodeGenerator = - if Seq.isEmpty providerCodeGenerators then - let name = "providerCodeGenerators" - invalidArg name (AbstractionsStrings.CollectionArgumentIsEmpty name) - else - providerCodeGenerators |> Seq.tryLast - let mutable _entityTypeBuilderInitialized = false let entityLambdaIdentifier = "entity" - let defaultNamespaces = + let defaultNamespaces = [ "System" "System.Collections.Generic" @@ -57,12 +48,12 @@ type FSharpDbContextGenerator sb |> append "open " |> appendLine (contextName.Replace("Context", "Domain")) |> appendEmptyLine - |> append "type " |> append contextName |> appendLine " =" + |> appendLine (sprintf "type %s =" contextName) |> indent |> appendLine "inherit DbContext" |> appendEmptyLine |> appendLine "new() = { inherit DbContext() }" - |> append "new(options : DbContextOptions<" |> append contextName |> appendLine ">) =" + |> appendLine (sprintf "new(options : DbContextOptions<%s>) =" contextName) |> appendLineIndent "{ inherit DbContext(options) }" |> appendEmptyLine @@ -73,15 +64,15 @@ type FSharpDbContextGenerator sb |> appendLine "[]" - |> append "val mutable private " |> append mutableName |> append " : DbSet<" |> append entityType.Name |> appendLine ">" - |> append "member this." |> appendLine dbSetName + |> appendLine (sprintf "val mutable private %s : DbSet<%s>" mutableName entityType.Name) + |> appendLine (sprintf "member this.%s" dbSetName) |> indent - |> append "with get() = this." |> appendLine mutableName - |> append "and set v = this." |> append mutableName |> appendLine " <- v" + |> appendLine (sprintf "with get() = this.%s" mutableName) + |> appendLine (sprintf "and set v = this.%s <- v" mutableName) |> unindent |> ignore - sb.AppendLine() |> ignore + sb.AppendLine() |> ignore let generateDbSets (model:IModel) (sb:IndentedStringBuilder) = @@ -89,11 +80,11 @@ type FSharpDbContextGenerator |> Seq.iter(fun entityType -> entityType |> generateDbSet sb) if model.GetEntityTypes() |> Seq.isEmpty |> not then - sb |> appendEmptyLine |> ignore - - sb + sb |> appendEmptyLine + else + sb - let generateEntityTypeErrors (model:IModel) (sb:IndentedStringBuilder) = + let generateEntityTypeErrors (model:IModel) (sb:IndentedStringBuilder) = let entityTypeErrors = modelEntityTypeErrors model @@ -101,55 +92,41 @@ type FSharpDbContextGenerator |> Seq.iter (fun e -> sb |> appendLine (sprintf "// %s Please see the warning messages." e.Value) |> ignore) if entityTypeErrors |> Seq.isEmpty |> not then - sb |> appendEmptyLine |> ignore - - sb + sb |> appendEmptyLine + else + sb - let generateOnConfiguring (connectionString:string) (sb:IndentedStringBuilder) = + let generateOnConfiguring (connectionString:string) suppressOnConfiguring suppressConnectionStringWarning (sb:IndentedStringBuilder) = - let connStringLine = - match providerCodeGenerator with - | Some pcg -> - let contextOptions = pcg.GenerateContextOptions() - let useProviderCall = - if isNull contextOptions then - pcg.GenerateUseProvider(connectionString, pcg.GenerateProviderOptions()) + let writeWarning suppressWarning connString (isb:IndentedStringBuilder) = + if suppressWarning then + isb else - pcg.GenerateUseProvider(connectionString, pcg.GenerateProviderOptions()).Chain(contextOptions) - - let fragment = code.Fragment useProviderCall + isb + |> unindent + |> unindent + |> unindent + |> unindent + |> appendLine "#warning: To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263." + |> indent + |> indent + |> indent - sprintf "optionsBuilder%s |> ignore" fragment - | None -> - let name = "providerCodeGenerators" - invalidArg name (AbstractionsStrings.CollectionArgumentIsEmpty name) - + if suppressOnConfiguring then + sb + else sb |> appendLine "override this.OnConfiguring(optionsBuilder: DbContextOptionsBuilder) =" |> indent |> appendLine "if not optionsBuilder.IsConfigured then" |> indent - |> appendLine connStringLine + |> writeWarning suppressConnectionStringWarning connectionString + |> appendLine ("optionsBuilder" + (connectionString |> providerCodeGenerator.GenerateUseProvider |> code.Fragment) + " |> ignore") |> appendLine "()" |> appendEmptyLine |> unindent |> unindent - let removeAnnotation (annotationToRemove : string) (annotations : IAnnotation seq) = - annotations |> Seq.filter (fun a -> a.Name <> annotationToRemove) - - let checkAnnotation (model:IModel) (annotation: IAnnotation) = - if annotationCodeGenerator.IsHandledByConvention(model, annotation) then - (annotation |> Some, None) - else - let methodCall = annotationCodeGenerator.GenerateFluentApi(model, annotation) - let line = FSharpUtilities.generate(methodCall) - - if isNull line then - (None, None) - else - (annotation |> Some, line |> Some) - let generateAnnotations (annotations: IAnnotation seq) = annotations |> Seq.map (fun a -> @@ -157,8 +134,24 @@ type FSharpDbContextGenerator let literal = FSharpUtilities.generateLiteral(a.Value) sprintf ".HasAnnotation(%s, %s)" name literal) - let generateEntityTypes (entities: IEntityType seq) useDataAnnotations (sb:IndentedStringBuilder) = - sb + let linesFromAnnotations (annotations: IAnnotation seq) (annotatable: IAnnotatable) = + let annotations = + annotations + |> annotationsToDictionary + + let fluentApiCalls = + match annotatable with + | :? IModel as m -> annotationCodeGenerator.GenerateFluentApiCalls(m, annotations) + | :? IEntityType as e -> annotationCodeGenerator.GenerateFluentApiCalls(e, annotations) + | :? IKey as k -> annotationCodeGenerator.GenerateFluentApiCalls(k, annotations) + | :? IForeignKey as fk -> annotationCodeGenerator.GenerateFluentApiCalls(fk, annotations) + | :? IProperty as p -> annotationCodeGenerator.GenerateFluentApiCalls(p, annotations) + | :? IIndex as i -> annotationCodeGenerator.GenerateFluentApiCalls(i, annotations) + | _ -> failwith "Unhandled pattern match in isHandledByConvention" + + fluentApiCalls + |> Seq.map code.Fragment + |> Seq.append (generateAnnotations annotations.Values) let generateSequence (s: ISequence) (sb:IndentedStringBuilder) = @@ -191,36 +184,6 @@ type FSharpDbContextGenerator |> unindent |> ignore - let isHandledByConvention (annotatable : IAnnotatable) annotation = - match annotatable with - | :? IModel as m -> annotationCodeGenerator.IsHandledByConvention(m, annotation) - | :? IEntityType as e -> annotationCodeGenerator.IsHandledByConvention(e, annotation) - | :? IKey as k -> annotationCodeGenerator.IsHandledByConvention(k, annotation) - | :? IForeignKey as fk -> annotationCodeGenerator.IsHandledByConvention(fk, annotation) - | :? IProperty as p -> annotationCodeGenerator.IsHandledByConvention(p, annotation) - | :? IIndex as i -> annotationCodeGenerator.IsHandledByConvention(i, annotation) - | _ -> failwith "Unhandled pattern match in isHandledByConvention" - - let generateFluentApiWithLanguage (annotatable : IAnnotatable) annotation = - match annotatable with - | :? IModel as m -> annotationCodeGenerator.GenerateFluentApi(m, annotation) - | :? IEntityType as e -> annotationCodeGenerator.GenerateFluentApi(e, annotation) - | :? IKey as k -> annotationCodeGenerator.GenerateFluentApi(k, annotation) - | :? IForeignKey as fk -> annotationCodeGenerator.GenerateFluentApi(fk, annotation) - | :? IProperty as p -> annotationCodeGenerator.GenerateFluentApi(p, annotation) - | :? IIndex as i -> annotationCodeGenerator.GenerateFluentApi(i, annotation) - | _ -> failwith "Unhandled pattern match in generateFluentApiWithLanguage" - - let generateFluentApi (annotatable : IAnnotatable) annotation = - match annotatable with - | :? IModel as m -> annotationCodeGenerator.GenerateFluentApi(m, annotation) - | :? IEntityType as e -> annotationCodeGenerator.GenerateFluentApi(e, annotation) - | :? IKey as k -> annotationCodeGenerator.GenerateFluentApi(k, annotation) - | :? IForeignKey as fk -> annotationCodeGenerator.GenerateFluentApi(fk, annotation) - | :? IProperty as p -> annotationCodeGenerator.GenerateFluentApi(p, annotation) - | :? IIndex as i -> annotationCodeGenerator.GenerateFluentApi(i, annotation) - | _ -> failwith "Unhandled pattern match in generateFluentApi" - let generateLambdaToKey (properties : IReadOnlyList) lambdaIdentifier = match properties.Count with | 0 -> "" @@ -228,7 +191,7 @@ type FSharpDbContextGenerator | _ -> let props = properties |> Seq.map (fun p -> sprintf "%s.%s" lambdaIdentifier p.Name) - + sprintf "fun %s -> (%s) :> obj" lambdaIdentifier (String.Join(", ", props)) let generatePropertyNameArray (properties : IReadOnlyList) = @@ -238,32 +201,6 @@ type FSharpDbContextGenerator sprintf "[| %s |]" (String.Join("; ", props)) - let getLinesFromAnnotations (annotatable : IAnnotatable) annotations = - let annotationsToRemove = ResizeArray() - let lines = ResizeArray() - - annotations - |> Seq.iter (fun a -> - - if isHandledByConvention annotatable a then - annotationsToRemove.Add a - else - let methodCall = generateFluentApi annotatable a - - let line = - if isNull methodCall then - generateFluentApiWithLanguage annotatable a |> code.Fragment - else - code.Fragment methodCall - - if not (isNull line) then - lines.Add line - annotationsToRemove.Add a - ) - - annotations |> Seq.except annotationsToRemove |> generateAnnotations |> lines.AddRange - lines |> Seq.toList - let initializeEntityTypeBuilder (entityType: IEntityType) sb = if not _entityTypeBuilderInitialized then @@ -274,7 +211,7 @@ type FSharpDbContextGenerator |> ignore _entityTypeBuilderInitialized <- true - + let appendMultiLineFluentApi entityType lines sb = if lines |> Seq.isEmpty then @@ -286,68 +223,76 @@ type FSharpDbContextGenerator sb |> indent |> appendEmptyLine - |> appendLine entityLambdaIdentifier + |> append entityLambdaIdentifier |> indent - |> ignore - - lines - |> Seq.iter(fun l -> sb |> appendLine l |> ignore) - - sb + |> appendLines lines false |> appendLine "|> ignore" |> unindent |> unindent |> ignore - let generateKeyGuardClause (key : IKey) (annotations : IAnnotation list) useDataAnnotations explicitName = - if key.Properties.Count = 1 && annotations.IsEmpty then - (* - let ck = key :?> Key - let kvc = KeyDiscoveryConvention. - let props = - KeyDiscoveryConvention.DiscoverKeyProperties( - ck.DeclaringEntityType, - (key.Properties |> Seq.map(fun p -> p :> IConventionProperty) |> Seq.toList)) - - if key.Properties.StructuralSequenceEqual(props |> Seq.cast) then - true *) - if (not explicitName) && useDataAnnotations then - true - else false + let generateKeyGuardClause (key : IKey) (annotations : IAnnotation seq) useDataAnnotations explicitName = + if key.Properties.Count = 1 && annotations |> Seq.isEmpty then + match key with + | :? IConventionKey as concreteKey -> + let keyProperties = key.Properties + let concreteDeclaringProperties = + concreteKey.DeclaringEntityType.GetProperties() + |> Seq.cast + + + let concreteProperties = + KeyDiscoveryConvention.DiscoverKeyProperties( + concreteKey.DeclaringEntityType, concreteDeclaringProperties) + |> Seq.cast + + + System.Linq.Enumerable.SequenceEqual(keyProperties, concreteProperties) + | _ -> + if (not explicitName) && useDataAnnotations then + true + else false else false - let generateKey (key : IKey) useDataAnnotations sb = + let generateKey (key : IKey) (entityType: IEntityType) useDataAnnotations sb = if isNull key then + if not useDataAnnotations then + let lines = ResizeArray() + lines.Add ".HasNoKey()" + appendMultiLineFluentApi entityType lines sb () else let annotations = - key.GetAnnotations() - |> removeAnnotation RelationalAnnotationNames.Name - |> Seq.toList + annotationCodeGenerator.FilterIgnoredAnnotations(key.GetAnnotations()) + |> annotationsToDictionary + + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(key, annotations); let explicitName = key.GetName() <> key.GetDefaultName() + annotations.Remove(RelationalAnnotationNames.Name) |> ignore - let shouldExitEarly = generateKeyGuardClause key annotations useDataAnnotations explicitName + // TODO: guard clause code + let earlyExit = generateKeyGuardClause key annotations.Values useDataAnnotations explicitName - if shouldExitEarly then - () - else - + if not earlyExit then let lines = ResizeArray() lines.Add(sprintf ".HasKey(%s)" (generateLambdaToKey key.Properties "e")) if explicitName then lines.Add(sprintf ".HasName(%s)" (code.Literal (key.GetName()))) - lines.AddRange(getLinesFromAnnotations key annotations) + annotationCodeGenerator.GenerateFluentApiCalls(key, annotations) + |> Seq.map code.Fragment + |> Seq.append (generateAnnotations annotations.Values) + |> lines.AddRange - sb |> appendMultiLineFluentApi key.DeclaringEntityType lines + appendMultiLineFluentApi key.DeclaringEntityType lines sb let generateTableName (entityType : IEntityType) sb = - + let tableName = entityType.GetTableName() let schema = entityType.GetSchema() let defaultSchema = entityType.Model.GetDefaultSchema() @@ -356,7 +301,7 @@ type FSharpDbContextGenerator let explicitTable = explicitSchema || (not (isNull tableName) && tableName <> entityType.GetDbSetName()) if explicitTable then - + let parameterString = if explicitSchema then sprintf "%s, %s" (code.Literal tableName) (code.Literal schema) @@ -367,28 +312,43 @@ type FSharpDbContextGenerator let lines = ResizeArray() lines.Add(sprintf ".ToTable(%s)" parameterString) - appendMultiLineFluentApi entityType lines sb - + let viewName = entityType.GetViewName() + let viewSchema = entityType.GetViewSchema() + + let explicitViewSchema = viewSchema |> isNull |> not && viewSchema <> defaultSchema + let explicitViewTable = explicitViewSchema || viewName |> isNull |> not + + if explicitViewTable then + let parameterString = + if explicitViewSchema then $"{code.Literal(viewName)}, {code.Literal(viewSchema)}" else code.Literal(viewName) + + lines.Add($".ToView({parameterString})") + + appendMultiLineFluentApi entityType lines sb + let generateIndex (index : IIndex) sb = - let lines = ResizeArray() - lines.Add(sprintf ".HasIndex(%s)" (generateLambdaToKey index.Properties "e")) + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(index.GetAnnotations()) + |> annotationsToDictionary + + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, annotations) - let annotations = ResizeArray() - annotations.AddRange(index.GetAnnotations()) + let lines = ResizeArray() + lines.Add( + sprintf ".HasIndex((%s), %s)" // Parentheses required for F# implicit conversion to Expression> + (generateLambdaToKey index.Properties "e") + (code.Literal(index.GetDatabaseName()))) - if not (String.IsNullOrEmpty(string index.[RelationalAnnotationNames.Name])) then - lines.Add(sprintf ".HasName(%s)" (code.Literal (index.GetName()))) - annotations.RemoveAt(annotations.FindIndex(fun i -> i.Name = RelationalAnnotationNames.Name)) + annotations.Remove(RelationalAnnotationNames.Name) |> ignore if index.IsUnique then lines.Add(".IsUnique()") - if not (isNull (index.GetFilter())) then - lines.Add(sprintf ".HasFilter(%s)" (code.Literal (index.GetFilter()))) - annotations.RemoveAt(annotations.FindIndex(fun i -> i.Name = RelationalAnnotationNames.Filter)) - - let linesToAdd = getLinesFromAnnotations index annotations - lines.AddRange linesToAdd + annotationCodeGenerator + .GenerateFluentApiCalls(index, annotations) + |> Seq.map (fun m -> code.Fragment(m)) + |> Seq.append (generateAnnotations annotations.Values) + |> lines.AddRange appendMultiLineFluentApi index.DeclaringEntityType lines sb @@ -398,97 +358,104 @@ type FSharpDbContextGenerator lines.Add(sprintf ".Property(fun e -> e.%s)" property.Name) let annotations = - property.GetAnnotations() - |> removeAnnotation RelationalAnnotationNames.ColumnName - |> removeAnnotation RelationalAnnotationNames.ColumnType - |> removeAnnotation CoreAnnotationNames.MaxLength - |> removeAnnotation CoreAnnotationNames.TypeMapping - |> removeAnnotation CoreAnnotationNames.Unicode - |> removeAnnotation RelationalAnnotationNames.DefaultValue - |> removeAnnotation RelationalAnnotationNames.DefaultValueSql - |> removeAnnotation RelationalAnnotationNames.ComputedColumnSql - |> removeAnnotation RelationalAnnotationNames.IsFixedLength - |> removeAnnotation ScaffoldingAnnotationNames.ColumnOrdinal - |> Seq.toList - - if useDataAnnotations then - if not property.IsNullable && - (SharedTypeExtensions.isNullableType property.ClrType || - SharedTypeExtensions.isOptionType property.ClrType) && - not (property.IsPrimaryKey()) then - lines.Add ".IsRequired()" - - let columnName = property.GetColumnName() + annotationCodeGenerator.FilterIgnoredAnnotations(property.GetAnnotations()) + |> annotationsToDictionary - if not (isNull columnName) && columnName <> property.Name then - lines.Add(sprintf ".HasColumnName(%s)" (code.Literal columnName)) + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(property, annotations) + annotations.Remove(ScaffoldingAnnotationNames.ColumnOrdinal) |> ignore - let columnType = property.GetConfiguredColumnType() - - if not (isNull columnName) then - lines.Add(sprintf ".HasColumnType(%s)" (code.Literal columnType)) - - let maxLength = property.GetMaxLength() - - if maxLength.HasValue then - lines.Add(sprintf ".HasMaxLength(%s)" (code.Literal maxLength.Value)) - - if property.IsUnicode().HasValue then - lines.Add(sprintf ".IsUnicode(%s)" (if property.IsUnicode().Value then "" else "false")) - - if property.IsFixedLength() then - lines.Add ".IsFixedLength()" - - if not (property.GetDefaultValue() |> isNull) then - lines.Add(sprintf ".HasDefaultValue(%s)" (property.GetDefaultValue() |> code.UnknownLiteral)) - - if not (property.GetDefaultValueSql() |> isNull) then - lines.Add(sprintf ".HasDefaultValueSql(%s)" (property.GetDefaultValueSql() |> code.Literal)) - - if not (property.GetComputedColumnSql() |> isNull) then - lines.Add(sprintf ".HasComputedColumnSql(%s)" (property.GetComputedColumnSql() |> code.Literal)) + if useDataAnnotations then + annotations.Remove(RelationalAnnotationNames.ColumnName) |> ignore + annotations.Remove(RelationalAnnotationNames.ColumnType) |> ignore + annotationCodeGenerator.GenerateDataAnnotationAttributes(property, annotations) |> ignore + else + if property.IsNullable |> not + && property.ClrType |> SharedTypeExtensions.isNullableType + && property.IsPrimaryKey() |> not then + lines.Add(".IsRequired()") + + match property.GetConfiguredColumnType() |> isNull |> not with + | true -> + lines.Add($".HasColumnType({code.Literal(property.GetConfiguredColumnType())})") + annotations.Remove(RelationalAnnotationNames.ColumnType) |> ignore + | false -> () + + match property.GetMaxLength() |> Option.ofNullable with + | Some l -> + lines.Add($".HasMaxLength({code.Literal(l)})") + | None -> () + + match property.GetPrecision() |> Option.ofNullable, property.GetScale() |> Option.ofNullable with + | Some p, Some s when s <> 0 -> + lines.Add($".HasPrecision({code.Literal(p)}, {code.Literal(s)})") + | Some p, _ -> + lines.Add($".HasPrecision({code.Literal(p)})") + | _, _ -> () + + match property.IsUnicode() |> Option.ofNullable with + | Some b -> + let arg = if b then "" else "false" + lines.Add($".IsUnicode({arg})") + | None -> () + + match property.GetDefaultValue() |> Option.ofObj with + | Some d -> + annotations.Remove(RelationalAnnotationNames.DefaultValue) |> ignore + match d with + | :? DBNull -> lines.Add(".HasValue()") + | _ -> lines.Add($".HasValue({code.UnknownLiteral(d)})") + | _ -> () + + let isRowVersion = false let valueGenerated = property.ValueGenerated - let mutable isRowVersion = false - - let concreteProp = property :?> Property - if concreteProp.GetValueGeneratedConfigurationSource().HasValue - && RelationalValueGenerationConvention.GetValueGenerated(concreteProp) <> Nullable(valueGenerated) then + match property with + | :? IConventionProperty as cp -> + match cp.GetValueGeneratedConfigurationSource() |> Option.ofNullable with + | Some valueGeneratedConfigurationSource when + valueGeneratedConfigurationSource <> ConfigurationSource.Convention + && ValueGenerationConvention.GetValueGenerated(property) <> (valueGenerated |> Nullable) -> let methodName = match valueGenerated with | ValueGenerated.OnAdd -> "ValueGeneratedOnAdd" - | ValueGenerated.OnAddOrUpdate -> - isRowVersion <- property.IsConcurrencyToken - if isRowVersion then "IsRowVersion" else "ValueGeneratedOnAddOrUpdate" + | ValueGenerated.OnAddOrUpdate when property.IsConcurrencyToken -> "IsRowVersion" + | ValueGenerated.OnAddOrUpdate -> "ValueGeneratedOnAddOrUpdate" + | ValueGenerated.OnUpdate -> "ValueGeneratedOnUpdate" | ValueGenerated.Never -> "ValueGeneratedNever" - | _ -> "" + | _ -> invalidOp $"Unhandled enum value ValueGenerated.{valueGenerated}" + lines.Add($".{methodName}()") + | _ -> () + | _ -> () - lines.Add(sprintf ".%s()" methodName) + if property.IsConcurrencyToken && isRowVersion |> not then + lines.Add(".IsConcurrencyToken()") - if property.IsConcurrencyToken && not isRowVersion then - lines.Add ".IsConcurrencyToken()" + annotationCodeGenerator.GenerateFluentApiCalls(property, annotations) + |> Seq.map code.Fragment + |> Seq.append (generateAnnotations annotations.Values) + |> lines.AddRange - let generatedLines = getLinesFromAnnotations property annotations - lines.AddRange generatedLines - - match lines.Count with - | 2 -> - let concatLines = - seq { - yield (lines.[0] + lines.[1]) - } - - appendMultiLineFluentApi property.DeclaringEntityType concatLines sb - | _ -> appendMultiLineFluentApi property.DeclaringEntityType lines sb + if lines.Count = 0 then + () + elif lines.Count = 2 then + let l1 = lines.[0] //Why? + let l2 = lines.[1] + lines.Clear() + seq { l1; l2 } |> lines.AddRange + appendMultiLineFluentApi property.DeclaringEntityType lines sb let generateRelationship (fk : IForeignKey) useDataAnnotations sb = let mutable canUseDataAnnotations = false - let annotations = fk.GetAnnotations() |> ResizeArray + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(fk.GetAnnotations()) + |> annotationsToDictionary - let lines = ResizeArray() + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(fk, annotations) + + let lines = ResizeArray() lines.Add(sprintf ".HasOne(%s)" (if isNull fk.DependentToPrincipal then "" else (sprintf "fun d -> d.%s" fk.DependentToPrincipal.Name))) lines.Add(sprintf ".%s(%s)" (if fk.IsUnique then "WithOne" else "WithMany") (if isNull fk.PrincipalToDependent then "" else code.Literal fk.PrincipalToDependent.Name)) @@ -498,7 +465,7 @@ type FSharpDbContextGenerator lines.Add(sprintf ".HasPrincipalKey%s(%s)" (if fk.IsUnique then (sprintf "<%s>" ((fk.PrincipalEntityType :> ITypeBase).DisplayName())) else "") (generatePropertyNameArray fk.PrincipalKey.Properties) ) lines.Add(sprintf ".HasForeignKey%s(%s)" (if fk.IsUnique then (sprintf "<%s>" ((fk.DeclaringEntityType :> ITypeBase).DisplayName())) else "") (generatePropertyNameArray fk.Properties) ) - + let defaultOnDeleteAction = if fk.IsRequired then DeleteBehavior.Cascade else DeleteBehavior.ClientSetNull if fk.DeleteBehavior <> defaultOnDeleteAction then @@ -507,32 +474,12 @@ type FSharpDbContextGenerator if not (String.IsNullOrEmpty(string fk.[RelationalAnnotationNames.Name])) then canUseDataAnnotations <- false - lines.Add(sprintf ".HasConstraintName(%s)" (fk.GetConstraintName() |> code.Literal)) - annotations.RemoveAt(annotations.FindIndex(fun a -> a.Name = RelationalAnnotationNames.Name)) - - - let annotationsToRemove = ResizeArray() - - annotations - |> Seq.iter (fun a -> - - if isHandledByConvention fk a then - annotationsToRemove.Add a - else - let methodCall = generateFluentApi fk a - - let line = - if isNull methodCall then - generateFluentApiWithLanguage fk a - else - methodCall - if not (isNull line) then - canUseDataAnnotations <- false - lines.Add (line |> code.Fragment) - annotationsToRemove.Add a - ) - annotations |> Seq.except annotationsToRemove |> generateAnnotations |> lines.AddRange + annotationCodeGenerator + .GenerateFluentApiCalls(fk, annotations) + |> Seq.map code.Fragment + |> Seq.append (generateAnnotations annotations.Values) + |> lines.AddRange if not useDataAnnotations || not canUseDataAnnotations then appendMultiLineFluentApi fk.DeclaringEntityType lines sb @@ -541,28 +488,54 @@ type FSharpDbContextGenerator let generateEntityType (entityType : IEntityType) (useDataAnnotations : bool) (sb:IndentedStringBuilder) = - sb |> generateKey (entityType.FindPrimaryKey()) useDataAnnotations + generateKey (entityType.FindPrimaryKey()) entityType useDataAnnotations sb let annotations = - entityType.GetAnnotations() - |> removeAnnotation CoreAnnotationNames.ConstructorBinding - |> removeAnnotation RelationalAnnotationNames.TableName - |> removeAnnotation RelationalAnnotationNames.Schema - |> removeAnnotation ScaffoldingAnnotationNames.DbSetName - |> Seq.toList + annotationCodeGenerator.FilterIgnoredAnnotations(entityType.GetAnnotations()) + |> annotationsToDictionary + + seq { + RelationalAnnotationNames.TableName + RelationalAnnotationNames.Schema + RelationalAnnotationNames.ViewName + RelationalAnnotationNames.ViewSchema + ScaffoldingAnnotationNames.DbSetName + RelationalAnnotationNames.ViewDefinitionSql + } |> Seq.iter (annotations.Remove >> ignore) + + if useDataAnnotations then + annotationCodeGenerator.GenerateDataAnnotationAttributes(entityType, annotations) + |> ignore - if not useDataAnnotations then - sb |> generateTableName entityType |> ignore + if not useDataAnnotations || entityType.GetViewName() |> isNull |> not then + sb |> generateTableName entityType + sb |> appendMultiLineFluentApi entityType (linesFromAnnotations annotations.Values entityType) - let lines = getLinesFromAnnotations entityType annotations - - sb |> appendMultiLineFluentApi entityType lines |> ignore + let lines = ResizeArray() + + annotationCodeGenerator.GenerateFluentApiCalls(entityType, annotations) + |> Seq.map code.Fragment + |> Seq.append (generateAnnotations annotations.Values) + |> lines.AddRange + + appendMultiLineFluentApi entityType lines sb + + entityType.GetIndexes() + |> Seq.iter(fun i -> + let indexAnnotations = + annotationCodeGenerator.FilterIgnoredAnnotations(i.GetAnnotations()) + |> annotationsToDictionary + + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(i, indexAnnotations) + if useDataAnnotations |> not || indexAnnotations.Count > 0 then + generateIndex i sb) + + entityType.GetProperties() |> Seq.iter(fun p -> + generateProperty p useDataAnnotations sb) + entityType.GetForeignKeys() |> Seq.iter(fun fk -> + generateRelationship fk useDataAnnotations sb) - entityType.GetIndexes() |> Seq.iter(fun i -> generateIndex i sb) - entityType.GetProperties() |> Seq.iter(fun p -> generateProperty p useDataAnnotations sb) - entityType.GetForeignKeys() |> Seq.iter(fun fk -> generateRelationship fk useDataAnnotations sb) - sb @@ -572,45 +545,36 @@ type FSharpDbContextGenerator |> ignore let annotations = - model.GetAnnotations() - |> removeAnnotation CoreAnnotationNames.ProductVersion - |> removeAnnotation CoreAnnotationNames.ChangeTrackingStrategy - |> removeAnnotation CoreAnnotationNames.OwnedTypes - |> removeAnnotation ChangeDetector.SkipDetectChangesAnnotation - |> removeAnnotation RelationalAnnotationNames.MaxIdentifierLength - |> removeAnnotation RelationalAnnotationNames.CheckConstraints - |> removeAnnotation ScaffoldingAnnotationNames.DatabaseName - |> removeAnnotation ScaffoldingAnnotationNames.EntityTypeErrors - |> Seq.toList - - let annotationsToRemove = - annotations - |> Seq.filter(fun a -> a.Name.StartsWith(RelationalAnnotationNames.SequencePrefix, StringComparison.Ordinal)) + annotationCodeGenerator.FilterIgnoredAnnotations(model.GetAnnotations()) + |> annotationsToDictionary - let checkedAnnotations = - annotations - |> Seq.map(fun a -> a |> checkAnnotation model) + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(model, annotations) - let moreAnnotaionsToRemove = - checkedAnnotations - |> Seq.map(fun (a, _) -> a) - |> Seq.choose id + seq { + CoreAnnotationNames.ProductVersion + RelationalAnnotationNames.MaxIdentifierLength + ScaffoldingAnnotationNames.DatabaseName + ScaffoldingAnnotationNames.EntityTypeErrors + } |> Seq.iter (annotations.Remove >> ignore) - let toRemove = annotationsToRemove |> Seq.append moreAnnotaionsToRemove + let generateAnnotations (a: IAnnotation seq) = + a + |> Seq.map (fun a -> + sprintf ".HasAnnotation(%s, %s)" (code.Literal(a.Name)) (code.UnknownLiteral(a.Value)) ) let lines = - checkedAnnotations - |> Seq.map (fun (_, l) -> l) - |> Seq.choose id - |> Seq.append ((annotations |> Seq.except toRemove) |> generateAnnotations) + annotationCodeGenerator.GenerateFluentApiCalls(model, annotations) + |> Seq.map code.Fragment + |> Seq.append (generateAnnotations annotations.Values) + if lines |> Seq.isEmpty |> not then sb |> appendEmptyLine |> indent - |> append "modelBuilder" + |> append ("modelBuilder" + (lines |> Seq.head)) |> indent - |> appendLines lines false + |> appendLines (lines |> Seq.tail) false |> appendLine "|> ignore" |> appendEmptyLine |> unindent @@ -631,44 +595,65 @@ type FSharpDbContextGenerator sb |> unindent |> appendLine ") |> ignore" |> ignore ) - - model.GetSequences() |> Seq.iter(fun s -> generateSequence s sb |> ignore) + + model.GetSequences() |> Seq.iter(fun s -> generateSequence s sb) sb |> appendEmptyLine |> appendLine "modelBuilder.RegisterOptionTypes()" |> unindent - let generateClass model contextName connectionString useDataAnnotations sb = + let generateClass model + contextName + connectionString + useDataAnnotations + suppressOnConfiguring + suppressConnectionStringWarning + sb = + sb |> generateType contextName |> generateDbSets model |> generateEntityTypeErrors model - |> generateOnConfiguring connectionString + |> generateOnConfiguring connectionString suppressOnConfiguring suppressConnectionStringWarning |> generateOnModelCreating model useDataAnnotations - interface Microsoft.EntityFrameworkCore.Scaffolding.Internal.ICSharpDbContextGenerator with - member this.WriteCode (model, contextName, connectionString, contextNamespace, modelNamespace, useDataAnnotations, suppressConnectionStringWarning) = + interface ICSharpDbContextGenerator with + member this.WriteCode (model, + contextName, + connectionString, + contextNamespace, + modelNamespace, + useDataAnnotations, + suppressConnectionStringWarning, + suppressOnConfiguring) = let sb = IndentedStringBuilder() - let finalContextNamespace = + let finalContextNamespace = if contextNamespace |> isNull then modelNamespace - else + else contextNamespace sb |> writeNamespaces (finalContextNamespace) |> ignore - + if finalContextNamespace <> modelNamespace then sb |> appendLine (sprintf "open %s" modelNamespace) |> ignore sb - |> generateClass model contextName connectionString useDataAnnotations + |> generateClass + model + contextName + connectionString + useDataAnnotations + suppressOnConfiguring + suppressConnectionStringWarning + |> ignore sb.ToString() diff --git a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs index 59fd855..6c035c8 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs @@ -4,31 +4,35 @@ open System open System.Collections.Generic open System.Reflection open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.Design +open Microsoft.EntityFrameworkCore.Infrastructure open Microsoft.EntityFrameworkCore.Metadata open Microsoft.EntityFrameworkCore.Metadata.Internal +open Microsoft.EntityFrameworkCore.Scaffolding.Internal +open EntityFrameworkCore.FSharp open EntityFrameworkCore.FSharp.EntityFrameworkExtensions open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities open EntityFrameworkCore.FSharp.Internal -module ScaffoldingTypes = - type RecordOrType = | ClassType | RecordType - type OptionOrNullable = | OptionTypes | NullableTypes - -open ScaffoldingTypes -open Microsoft.EntityFrameworkCore.Design -open Microsoft.EntityFrameworkCore.Internal +open System.ComponentModel.DataAnnotations +open System.ComponentModel.DataAnnotations.Schema +/// Create attributes of a given name type internal AttributeWriter(name:string) = let parameters = List() + + /// Add parameter to Attribute member __.AddParameter p = parameters.Add p + + /// Write attribute to string override __.ToString() = if Seq.isEmpty parameters then sprintf "[<%s>]" name else sprintf "[<%s(%s)>]" name (String.Join(", ", parameters)) -type FSharpEntityTypeGenerator(code : ICSharpHelper) = +type FSharpEntityTypeGenerator(annotationCodeGenerator : IAnnotationCodeGenerator, code : ICSharpHelper, config: ScaffoldOptions) = let createAttributeQuick = AttributeWriter >> string let primitiveTypeNames = seq { @@ -44,36 +48,36 @@ type FSharpEntityTypeGenerator(code : ICSharpHelper) = yield (typedefof, "decimal") } |> dict - - let rec getTypeName optionOrNullable (t:Type) = + + let writeProperty name ``type`` func sb = + sb + |> appendLine (sprintf "[] val mutable private _%s : %s" name ``type``) + |> appendEmptyLine + |> func + |> appendLine (sprintf "member this.%s with get() = this._%s and set v = this._%s <- v" name name name) + |> appendEmptyLine + |> ignore + + let rec getTypeName scaffoldNullableColumnsAs (t:Type) = if t.IsArray then - (getTypeName optionOrNullable (t.GetElementType())) + "[]" + (getTypeName scaffoldNullableColumnsAs (t.GetElementType())) + "[]" else if t.GetTypeInfo().IsGenericType then if t.GetGenericTypeDefinition() = typedefof> then - match optionOrNullable with - | NullableTypes -> "Nullable<" + (getTypeName optionOrNullable (Nullable.GetUnderlyingType(t))) + ">"; - | OptionTypes -> (getTypeName optionOrNullable (Nullable.GetUnderlyingType(t))) + " option" + match scaffoldNullableColumnsAs with + | NullableTypes -> "Nullable<" + (getTypeName scaffoldNullableColumnsAs (Nullable.GetUnderlyingType(t))) + ">"; + | OptionTypes -> (getTypeName scaffoldNullableColumnsAs (Nullable.GetUnderlyingType(t))) + " option" else let genericTypeDefName = t.Name.Substring(0, t.Name.IndexOf('`')); - let genericTypeArguments = String.Join(", ", t.GenericTypeArguments |> Seq.map(fun t' -> getTypeName optionOrNullable t')) + let genericTypeArguments = String.Join(", ", t.GenericTypeArguments |> Seq.map(fun t' -> getTypeName scaffoldNullableColumnsAs t')) genericTypeDefName + "<" + genericTypeArguments + ">"; - + else match primitiveTypeNames.TryGetValue t with | true, value -> value | _ -> t.Name - let generatePrimaryKeyAttribute (p:IProperty) sb = - - let key = getPrimaryKey p - - if isNull key || key.Properties.Count <> 1 then - sb - else - sb |> appendLine ("KeyAttribute" |> createAttributeQuick) - let generateRequiredAttribute (p:IProperty) sb = let isNullableOrOptionType (t:Type) = @@ -82,12 +86,12 @@ type FSharpEntityTypeGenerator(code : ICSharpHelper) = (typeInfo.IsGenericType && (typeInfo.GetGenericTypeDefinition() = typedefof> || typeInfo.GetGenericTypeDefinition() = typedefof>)) if (not p.IsNullable) && (p.ClrType |> isNullableOrOptionType) && (p.IsPrimaryKey() |> not) then - sb |> appendLine ("RequiredAttribute" |> createAttributeQuick) + sb |> appendLine (nameof RequiredAttribute |> createAttributeQuick) else sb let generateColumnAttribute (p:IProperty) sb = - let columnName = p.GetColumnName() + let columnName = p.GetColumnBaseName() let columnType = getConfiguredColumnType p let delimitedColumnName = if isNull columnName |> not && columnName <> p.Name then FSharpUtilities.delimitString(columnName) |> Some else Option.None @@ -104,7 +108,7 @@ type FSharpEntityTypeGenerator(code : ICSharpHelper) = | Some t -> (sprintf "Type = %s" t) |> a.AddParameter | None -> () - sb |> appendLine (a |> string) + sb |> appendLine (a |> string) else sb @@ -115,145 +119,305 @@ type FSharpEntityTypeGenerator(code : ICSharpHelper) = let ml = p.GetMaxLength() if ml.HasValue then - let attrName = + let attrName = if p.ClrType = typedefof then "StringLengthAttribute" else "MaxLengthAttribute" let a = AttributeWriter(attrName) a.AddParameter (code.Literal ml.Value) - sb |> append (a |> string) + sb |> append (string a) + else + sb + + let generateKeyAttribute (property : IProperty) sb = + if notNull (property.FindContainingPrimaryKey()) then + sb |> appendLine (nameof KeyAttribute |> createAttributeQuick) + else + sb + + let generateKeylessAttribute (entityType : IEntityType) sb = + if isNull (entityType.FindPrimaryKey()) then + sb |> appendLine (nameof KeylessAttribute |> createAttributeQuick) else sb let generateTableAttribute (entityType : IEntityType) sb = - sb |> append "// Annotations" - let GenerateEntityTypeDataAnnotations entityType sb = - sb |> generateTableAttribute entityType + let tableName = entityType.GetTableName() + let schema = entityType.GetSchema() + let defaultSchema = entityType.Model.GetDefaultSchema() + + let schemaParameterNeeded = notNull schema && schema <> defaultSchema + let isView = notNull (entityType.GetViewName()) + let tableAttributeNeeded = (not isView) && (schemaParameterNeeded || notNull tableName && tableName <> entityType.GetDbSetName()) + + if tableAttributeNeeded then + let tableAttribute = AttributeWriter(nameof TableAttribute) + + tableAttribute.AddParameter(code.Literal(tableName)); + + if schemaParameterNeeded then + tableAttribute.AddParameter($"Schema = {code.Literal(schema)}") + + sb |> appendLine (string tableAttribute) + else + sb + + let generateIndexAttributes (entityType: IEntityType) sb = + + let indexes = + entityType.GetIndexes() + |> Seq.filter(fun i -> ConfigurationSource.Convention <> ((i :?> IConventionIndex).GetConfigurationSource())) + + indexes |> Seq.iter(fun index -> + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(index.GetAnnotations()) + |> annotationsToDictionary + + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, annotations) + + if annotations.Count = 0 then + let indexAttribute = AttributeWriter(nameof IndexAttribute) + + index.Properties |> Seq.iter(fun p -> indexAttribute.AddParameter $"nameof({p.Name})") + + if notNull index.Name then + indexAttribute.AddParameter $"Name = {code.Literal(index.Name)}" + + if index.IsUnique then + indexAttribute.AddParameter $"IsUnique = {code.Literal(index.IsUnique)}" + + sb |> appendLine (string indexAttribute) |> ignore + ) + + sb + + let generateForeignKeyAttribute (navigation:INavigation) sb = + + if navigation.IsOnDependent && navigation.ForeignKey.PrincipalKey.IsPrimaryKey() then + let foreignKeyAttribute = AttributeWriter(nameof ForeignKeyAttribute) + + if navigation.ForeignKey.Properties.Count > 1 then + let names = navigation.ForeignKey.Properties |> Seq.map(fun fk -> fk.Name) + let param = String.Join(",", names) + foreignKeyAttribute.AddParameter (code.Literal param) + else + foreignKeyAttribute.AddParameter (code.Literal navigation.ForeignKey.Properties.[0].Name) + + sb |> appendLine (string foreignKeyAttribute) + else + sb + + let generateInversePropertyAttribute (navigation:INavigation) sb = + + if navigation.ForeignKey.PrincipalKey.IsPrimaryKey() && notNull navigation.Inverse then + let inverseNavigation = navigation.Inverse + let inversePropertyAttribute = AttributeWriter(nameof InversePropertyAttribute) + + let nameMatches = + navigation.DeclaringEntityType.GetPropertiesAndNavigations() + |> Seq.exists(fun m -> m.Name = inverseNavigation.DeclaringEntityType.Name) + + let param = + if nameMatches then + code.Literal inverseNavigation.Name + else + $"\"{inverseNavigation.DeclaringEntityType.Name}.{inverseNavigation.Name}\"" + + inversePropertyAttribute.AddParameter param + + sb |> appendLine (string inversePropertyAttribute) + + else + sb + + let generateEntityTypeDataAnnotations entityType sb = + sb + |> generateKeylessAttribute entityType + |> generateTableAttribute entityType + |> generateIndexAttributes entityType + + let generateConstructor (entityType : IEntityType) sb = - let GenerateConstructor (entityType : IEntityType) sb = - sb |> appendLine "new() = { }" + let collectionNavigations = entityType.GetNavigations() |> Seq.filter(fun n -> n.IsCollection) - let GenerateProperties (entityType : IEntityType) (optionOrNullable:OptionOrNullable) sb = - // TODO: add key etc. - sb |> appendLine "// Properties" + if collectionNavigations |> Seq.isEmpty then + sb + else + sb + |> appendLine "do" + |> indent + |> appendLines (collectionNavigations |> Seq.map(fun c -> sprintf "this.%s <- HashSet<%s>() :> ICollection<%s>" c.Name c.TargetEntityType.Name c.TargetEntityType.Name)) false + |> appendEmptyLine + |> unindent - let GenerateNavigationProperties (entityType : IEntityType) (optionOrNullable:OptionOrNullable) sb = - sb |> appendLine "// NavigationProperties" - let GenerateClass (entityType : IEntityType) useDataAnnotations optionOrNullable sb = + let generatePropertyDataAnnotations (p:IProperty) sb = + + sb + |> generateKeyAttribute p + |> generateRequiredAttribute p + |> generateColumnAttribute p + |> generateMaxLengthAttribute p + |> ignore + + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(p.GetAnnotations()) + |> annotationsToDictionary + + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(p, annotations) + + annotationCodeGenerator.GenerateDataAnnotationAttributes(p, annotations) + |> Seq.iter(fun a -> + let attributeWriter = AttributeWriter a.Type.Name + a.Arguments |> Seq.iter(fun arg -> attributeWriter.AddParameter(code.UnknownLiteral arg)) + sb |> appendLine (string a) |> ignore + ) + + sb + + let generateNavigationDataAnnotations(navigation:INavigation) sb = + + sb + |> generateForeignKeyAttribute navigation + |> generateInversePropertyAttribute navigation + + let generateProperties (entityType : IEntityType) scaffoldNullableColumnsAs useDataAnnotations sb = + + let props = + entityType.GetProperties() + |> Seq.sortBy ScaffoldingPropertyExtensions.GetColumnOrdinal + + props + |> Seq.iter(fun p -> + let func = + if useDataAnnotations then + generatePropertyDataAnnotations p + else + (fun s -> s) + + let typeName = getTypeName scaffoldNullableColumnsAs p.ClrType + sb |> writeProperty p.Name typeName func + ) + + sb + + let generateNavigationProperties (entityType: IEntityType) scaffoldNullableColumnsAs useDataAnnotations sb = + + let sortedNavigations = + entityType.GetNavigations() + |> Seq.sortBy(fun n -> if n.IsOnDependent then 0 else 1) + |> Seq.sortBy(fun n -> if n.IsCollection then 1 else 0) + + if not(sortedNavigations |> Seq.isEmpty) then + sb |> appendEmptyLine |> ignore + + sortedNavigations + |> Seq.iter(fun p -> + + let func = + if useDataAnnotations then + generateNavigationDataAnnotations p + else + (fun s -> s) + + let typeName = + if isNull p.TargetEntityType.ClrType then + p.TargetEntityType.Name + else + getTypeName scaffoldNullableColumnsAs p.TargetEntityType.ClrType + let navigationType = if p.IsCollection then $"ICollection<{typeName}>" else typeName + + sb |> writeProperty p.Name navigationType func + ) + + sb + + let generateClass (entityType : IEntityType) useDataAnnotations scaffoldNullableColumnsAs sb = sb |> if useDataAnnotations then - GenerateEntityTypeDataAnnotations entityType + generateEntityTypeDataAnnotations entityType else id - |> appendLine ("type " + entityType.Name + "() =") + |> appendLine (sprintf "type %s() as this =" entityType.Name) |> indent - |> GenerateConstructor entityType - |> GenerateProperties entityType optionOrNullable - |> GenerateNavigationProperties entityType optionOrNullable - |> unindent + |> generateConstructor entityType + |> generateProperties entityType scaffoldNullableColumnsAs useDataAnnotations + |> generateNavigationProperties entityType scaffoldNullableColumnsAs useDataAnnotations + |> unindent - let generateRecordTypeEntry useDataAnnotations optionOrNullable (p: IProperty) sb = + let generateRecordTypeEntry useDataAnnotations scaffoldNullableColumnsAs (p: IProperty) sb = if useDataAnnotations then sb - |> generatePrimaryKeyAttribute p - |> generateRequiredAttribute p - |> generateColumnAttribute p - |> generateMaxLengthAttribute p + |> generatePropertyDataAnnotations p |> ignore - - let typeName = getTypeName optionOrNullable p.ClrType - sb |> appendLine (sprintf "%s: %s" p.Name typeName) |> ignore - () - - let writeRecordProperties (properties :IProperty seq) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNullable sb = - properties - |> Seq.iter(fun p -> generateRecordTypeEntry useDataAnnotations optionOrNullable p sb) - - sb - let generateForeignKeyAttribute (n:INavigation) sb = + let typeName = getTypeName scaffoldNullableColumnsAs p.ClrType + sb |> appendLine (sprintf "mutable %s: %s" p.Name typeName) |> ignore + () - if n.IsDependentToPrincipal() && n.ForeignKey.PrincipalKey.IsPrimaryKey() then - let a = "ForeignKeyAttribute" |> AttributeWriter - let props = n.ForeignKey.Properties |> Seq.map (fun n' -> n'.Name) - String.Join(",", props) |> FSharpUtilities.delimitString |> a.AddParameter - sb |> appendLine (a |> string) - else - sb + let writeRecordProperties (properties :IProperty seq) (useDataAnnotations:bool) scaffoldNullableColumnsAs sb = + properties + |> Seq.iter(fun p -> generateRecordTypeEntry useDataAnnotations scaffoldNullableColumnsAs p sb) - let generateInversePropertyAttribute (n:INavigation) sb = - if n.ForeignKey.PrincipalKey.IsPrimaryKey() then - let inverse = n.FindInverse() - if isNull inverse then - sb - else - let a = "InversePropertyAttribute" |> AttributeWriter - inverse.Name |> FSharpUtilities.delimitString |> a.AddParameter - sb |> appendLine (a |> string) - else - sb + sb - let generateNavigateTypeEntry (n:INavigation) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNullable sb = + let generateNavigateTypeEntry (n:INavigation) (useDataAnnotations:bool) sb = if useDataAnnotations then sb - |> generateForeignKeyAttribute n - |> generateInversePropertyAttribute n + |> generateNavigationDataAnnotations n |> ignore - let referencedTypeName = n.GetTargetType().Name + let referencedTypeName = n.TargetEntityType.Name let navigationType = - if n.IsCollection() then + if n.IsCollection then sprintf "ICollection<%s>" referencedTypeName else referencedTypeName - sb |> appendLine (sprintf "%s: %s" n.Name navigationType) |> ignore + sb |> appendLine (sprintf "mutable %s: %s" n.Name navigationType) |> ignore - let writeNavigationProperties (nav:INavigation seq) (useDataAnnotations:bool) (skipFinalNewLine: bool) optionOrNullable sb = - nav |> Seq.iter(fun n -> generateNavigateTypeEntry n useDataAnnotations skipFinalNewLine optionOrNullable sb) + let writeNavigationProperties (nav:INavigation seq) (useDataAnnotations:bool) sb = + nav |> Seq.iter(fun n -> generateNavigateTypeEntry n useDataAnnotations sb) sb - let GenerateRecord (entityType : IEntityType) (useDataAnnotations:bool) optionOrNullable sb = - + let generateRecord (entityType : IEntityType) (useDataAnnotations:bool) scaffoldNullableColumnsAs sb = let properties = entityType.GetProperties() - |> Seq.sortBy(fun p -> p.GetColumnOrdinal()) let navProperties = entityType |> EntityTypeExtensions.GetNavigations - |> Seq.sortBy(fun n -> ((if n.IsDependentToPrincipal() then 0 else 1), (if n.IsCollection() then 1 else 0))) - - let navsIsEmpty = navProperties |> Seq.isEmpty + |> Seq.sortBy(fun n -> ((if n.IsOnDependent then 0 else 1), (if n.IsCollection then 1 else 0))) sb |> appendLine ("CLIMutable" |> createAttributeQuick) - |> appendLine ("type " + entityType.Name + " = {") + |> appendLine (sprintf "type %s = {" entityType.Name) |> indent - |> writeRecordProperties properties useDataAnnotations navsIsEmpty optionOrNullable - |> writeNavigationProperties navProperties useDataAnnotations true optionOrNullable + |> writeRecordProperties properties useDataAnnotations scaffoldNullableColumnsAs + |> writeNavigationProperties navProperties useDataAnnotations |> unindent |> appendLine "}" |> appendEmptyLine - - let writeCode (entityType: IEntityType) (useDataAnnotation: bool) createTypesAs optionOrNullable sb = - + + let writeCode (entityType: IEntityType) (useDataAnnotation: bool) scaffoldTypesAs scaffoldNullableColumnsAs sb = + let generate = - match createTypesAs with - | ClassType -> GenerateClass - | RecordType -> GenerateRecord - + match scaffoldTypesAs with + | ClassType -> generateClass + | RecordType -> generateRecord + sb |> indent - |> generate entityType useDataAnnotation optionOrNullable + |> generate entityType useDataAnnotation scaffoldNullableColumnsAs |> string - interface Microsoft.EntityFrameworkCore.Scaffolding.Internal.ICSharpEntityTypeGenerator with - member __.WriteCode(entityType, _, useDataAnnotations) = - writeCode entityType useDataAnnotations RecordOrType.RecordType OptionOrNullable.OptionTypes (IndentedStringBuilder()) \ No newline at end of file + interface ICSharpEntityTypeGenerator with + member this.WriteCode(entityType, ``namespace``, useDataAnnotations) = + let scaffoldTypesAs = if notNull config then config.ScaffoldTypesAs else RecordType + let scaffoldNullableColumnsAs = if notNull config then config.ScaffoldNullableColumnsAs else OptionTypes + writeCode entityType useDataAnnotations scaffoldTypesAs scaffoldNullableColumnsAs (IndentedStringBuilder()) diff --git a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs index 7df6ef8..0dc5a67 100644 --- a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs @@ -1,15 +1,13 @@ namespace EntityFrameworkCore.FSharp.Scaffolding.Internal open System.IO +open Microsoft.EntityFrameworkCore.Infrastructure open Microsoft.EntityFrameworkCore.Metadata open Microsoft.EntityFrameworkCore.Scaffolding open Microsoft.EntityFrameworkCore.Scaffolding.Internal -open EntityFrameworkCore.FSharp.Scaffolding -open EntityFrameworkCore.FSharp.Scaffolding.ScaffoldingTypes -open EntityFrameworkCore.FSharp.EntityFrameworkExtensions open EntityFrameworkCore.FSharp.IndentedStringBuilderUtilities -open Microsoft.EntityFrameworkCore.Internal +open EntityFrameworkCore.FSharp.SharedTypeExtensions type FSharpModelGenerator @@ -17,7 +15,7 @@ type FSharpModelGenerator contextGenerator : ICSharpDbContextGenerator, entityTypeGenerator : ICSharpEntityTypeGenerator) = inherit ModelCodeGenerator(dependencies) - + let fileExtension = ".fs" let defaultNamespaces = [ @@ -40,7 +38,7 @@ type FSharpModelGenerator let createDomainFileContent (model:IModel) (useDataAnnotations:bool) (``namespace``:string) (domainFileName: string) = - let ``module`` = + let ``module`` = domainFileName.Replace("Context", "Domain") let namespaces = @@ -57,13 +55,13 @@ type FSharpModelGenerator |> writeNamespaces namespaces |> appendEmptyLine - let noEntities = + let noEntities = model.GetEntityTypes() |> Seq.isEmpty IndentedStringBuilder() |> writeNamespaces ``namespace`` |> append "module rec " |> append ``module`` |> appendLine " =" - |> appendEmptyLine + |> appendEmptyLine |> appendIfTrue (noEntities) " ()" override __.Language = "F#" @@ -71,44 +69,45 @@ type FSharpModelGenerator override __.GenerateModel(model: IModel, options: ModelCodeGenerationOptions) = let resultingFiles = ScaffoldedModel() - let generatedCode = + let generatedCode = contextGenerator.WriteCode( - model, - options.ContextName, + model, + options.ContextName, options.ConnectionString, options.ContextNamespace, - options.ModelNamespace, - options.UseDataAnnotations, - options.SuppressConnectionStringWarning) + options.ModelNamespace, + options.UseDataAnnotations, + options.SuppressConnectionStringWarning, + options.SuppressOnConfiguring) let dbContextFileName = options.ContextName + fileExtension; - let path = + let path = if notNull options.ContextDir then Path.Combine(options.ContextDir, dbContextFileName) - else + else dbContextFileName let contextFile = ScaffoldedFile( Code = generatedCode, Path = path) - + resultingFiles.ContextFile <- contextFile let dbContextFileName = options.ContextName let domainFile = ScaffoldedFile() - domainFile.Path <- ("TestDomain" + fileExtension) + domainFile.Path <- ("TestDomain" + fileExtension) - let domainFileBuilder = + let domainFileBuilder = createDomainFileContent model options.UseDataAnnotations options.ModelNamespace dbContextFileName model.GetEntityTypes() - |> Seq.iter(fun entityType -> + |> Seq.iter(fun entityType -> domainFileBuilder - |> append (entityTypeGenerator.WriteCode(entityType, - options.ModelNamespace, + |> append (entityTypeGenerator.WriteCode(entityType, + options.ModelNamespace, options.UseDataAnnotations)) |> ignore ) diff --git a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs index e211eae..ff4c53d 100644 --- a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs +++ b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs @@ -1,61 +1,59 @@ namespace EntityFrameworkCore.FSharp -open System -open Microsoft.EntityFrameworkCore.Internal +open System.Collections.Generic + +open Microsoft.EntityFrameworkCore.Design.Internal open Microsoft.EntityFrameworkCore.Metadata open Microsoft.EntityFrameworkCore.Infrastructure -open Microsoft.EntityFrameworkCore.Storage open Microsoft.EntityFrameworkCore open Microsoft.EntityFrameworkCore.Metadata.Internal +open Microsoft.EntityFrameworkCore.Migrations.Internal module internal EntityFrameworkExtensions = let getConfiguredColumnType = - Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalPropertyExtensions.GetConfiguredColumnType - - let getPrimaryKey (p:IProperty) = - (p :?> Microsoft.EntityFrameworkCore.Metadata.Internal.Property).PrimaryKey + RelationalPropertyExtensions.GetConfiguredColumnType - let getNamespaces = - Microsoft.EntityFrameworkCore.Internal.TypeExtensions.GetNamespaces + let getPrimaryKey (p: IProperty) = + (p :?> Property).PrimaryKey let sortNamespaces ns = - let namespaceComparer = Microsoft.EntityFrameworkCore.Design.Internal.NamespaceComparer() + let namespaceComparer = NamespaceComparer() ns |> List.sortWith (fun x y -> namespaceComparer.Compare(x, y)) let getId = - Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationExtensions.GetId + MigrationExtensions.GetId let findMapping (p:IProperty) = p.FindTypeMapping() let getDisplayName = - Microsoft.EntityFrameworkCore.EntityTypeExtensions.DisplayName + EntityTypeExtensions.DisplayName let getDeclaredProperties = - Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredProperties + EntityTypeExtensions.GetDeclaredProperties let getDeclaredKeys = - Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredKeys + EntityTypeExtensions.GetDeclaredKeys let getDeclaredIndexes = - Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredIndexes + EntityTypeExtensions.GetDeclaredIndexes let getData (b:bool) (entityType:IEntityType) = entityType.GetSeedData(b) let findDeclaredPrimaryKey = - Microsoft.EntityFrameworkCore.Metadata.Internal.EntityTypeExtensions.FindDeclaredPrimaryKey + EntityTypeExtensions.FindDeclaredPrimaryKey let getDeclaredForeignKeys = - Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredForeignKeys - + EntityTypeExtensions.GetDeclaredForeignKeys + let getDeclaredReferencingForeignKeys = - Microsoft.EntityFrameworkCore.EntityTypeExtensions.GetDeclaredReferencingForeignKeys + EntityTypeExtensions.GetDeclaredReferencingForeignKeys - let findOwnership (entityType : IEntityType) = - (entityType :?> Microsoft.EntityFrameworkCore.Metadata.Internal.EntityType) - |> Microsoft.EntityFrameworkCore.EntityTypeExtensions.FindOwnership + let findOwnership (entityType : IEntityType) = + (entityType :?> EntityType) + |> EntityTypeExtensions.FindOwnership let entityDbSetName (e : IEntityType) = e.GetDbSetName() @@ -64,4 +62,10 @@ module internal EntityFrameworkExtensions = m.GetEntityTypeErrors() let toAnnotatable (a : IAnnotatable) = - a \ No newline at end of file + a + + let annotationsToDictionary (annotations: IAnnotation seq) = + annotations + |> Seq.map (fun a -> a.Name, a) + |> readOnlyDict + |> Dictionary diff --git a/src/EFCore.FSharp/Utilities/IndentedStringBuilderUtilities.fs b/src/EFCore.FSharp/Utilities/IndentedStringBuilderUtilities.fs index be4fbfe..2f0cd8f 100644 --- a/src/EFCore.FSharp/Utilities/IndentedStringBuilderUtilities.fs +++ b/src/EFCore.FSharp/Utilities/IndentedStringBuilderUtilities.fs @@ -1,13 +1,13 @@ namespace EntityFrameworkCore.FSharp open System -open Microsoft.EntityFrameworkCore.Internal +open Microsoft.EntityFrameworkCore.Infrastructure module internal IndentedStringBuilderUtilities = let notNull o = o |> isNull |> not - let join (separator : string) (strings : string seq) = + let join (separator : string) (strings : string seq) = if Seq.isEmpty strings then String.Empty else @@ -32,7 +32,7 @@ module internal IndentedStringBuilderUtilities = if truth then b |> appendLine value else - b + b let private prependLine (addLineBreak: bool ref) (text:string) (sb:IndentedStringBuilder) = if addLineBreak.Value then @@ -55,7 +55,7 @@ module internal IndentedStringBuilderUtilities = let appendLineIndent message (sb:IndentedStringBuilder) = using (sb.Indent()) - (fun _ -> sb.AppendLine(message)) + (fun _ -> sb.AppendLine(message)) let indent (sb:IndentedStringBuilder) = sb.IncrementIndent() @@ -70,4 +70,4 @@ module internal IndentedStringBuilderUtilities = let appendAutoGeneratedTag (sb:IndentedStringBuilder) = sb |> appendLine "// " - + diff --git a/src/EFCore.FSharp/Utilities/Multigraph.fs b/src/EFCore.FSharp/Utilities/Multigraph.fs new file mode 100644 index 0000000..bba0db9 --- /dev/null +++ b/src/EFCore.FSharp/Utilities/Multigraph.fs @@ -0,0 +1,119 @@ +namespace EntityFrameworkCore.FSharp.Utilities + +open System.Collections.Generic + +type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = + let vertexSet = HashSet<'TVertex>() + let successorMap = Dictionary<'TVertex, Dictionary<'TVertex, List<'TEdge>>>() + let predecessorMap = Dictionary<'TVertex, HashSet<'TVertex>>() + + member this.AddVertices(vertices: 'TVertex seq) = + vertexSet.UnionWith(vertices) + + member this.AddEdge(from: 'TVertex, to': 'TVertex, edge: 'TEdge) = + let successorEdges = + match successorMap.TryGetValue from with + | true, successorEdges -> successorEdges + | _ -> + let successorEdges = Dictionary<'TVertex, List<'TEdge>>() + successorMap.Add(from, successorEdges) + successorEdges + + let edgeList = + match successorEdges.TryGetValue to' with + | true, edgeList -> edgeList + | _ -> + let edgeList = List() + successorEdges.Add(to', edgeList) + edgeList + + edgeList.Add(edge) + + let predecessors = + match predecessorMap.TryGetValue to' with + | true, predecessors -> predecessors + | _ -> + let predecessors = HashSet() + predecessorMap.Add(to', predecessors) + predecessors + + predecessors.Add(from) |> ignore + + member private this.ThrowCycle(cycle: List<'TVertex>) = + let cycleString = + cycle + |> Seq.map string + |> Seq.fold (fun c n -> $"{c} -> {n}") "" + + invalidOp $"Circular dependency {cycleString}" + + member this.TopologicalSort(): 'TVertex seq = + let sortedQueue = List() + let predecessorCounts = Dictionary<_,_>() + + let getOutgoingNeighbour (from: 'TVertex) = + match successorMap.TryGetValue from with + | true, successorSet -> seq { yield! successorSet.Keys } + | _ -> Seq.empty + + let getIncomingNeighbours to' = + match predecessorMap.TryGetValue to' with + | true, predecessors -> seq { yield! predecessors } + | _ -> Seq.empty + + vertexSet + |> Seq.iter (fun v -> + getOutgoingNeighbour v + |> Seq.iter (fun n -> + if predecessorCounts.ContainsKey(n) then + predecessorCounts.[n] <- predecessorCounts.[n] + 1 + else + predecessorCounts.[n] <- 1 + ) + ) + + vertexSet + |> Seq.filter (predecessorCounts.ContainsKey >> not) + |> sortedQueue.AddRange + + let mutable index = 0 + + while sortedQueue.Count < vertexSet.Count do + while index < sortedQueue.Count do + getOutgoingNeighbour (sortedQueue.[index]) + |> Seq.filter predecessorCounts.ContainsKey + |> Seq.iter (fun n -> + predecessorCounts.[n] <- predecessorCounts.[n] - 1 + if predecessorCounts.[n] = 0 then + sortedQueue.Add(n) + predecessorCounts.Remove(n) |> ignore + ) + + index <- index + 1 + + if sortedQueue.Capacity < vertexSet.Count then + let mutable currentCycleVertex = vertexSet |> Seq.find predecessorCounts.ContainsKey + let cycle = [ currentCycleVertex ] |> ResizeArray + let mutable finished = false + + let rec loop vertices = + match vertices with + | v :: rest -> + if predecessorCounts.[v] <> 0 then + predecessorCounts.[currentCycleVertex] <- predecessorCounts.[currentCycleVertex] - 1 + currentCycleVertex <- v + cycle.Add currentCycleVertex + finished <- predecessorCounts.[v] = -1 + else loop rest + | _ -> () + + while not finished do + getIncomingNeighbours currentCycleVertex + |> Seq.filter predecessorCounts.ContainsKey + |> Seq.toList + |> loop + + cycle.Reverse() + this.ThrowCycle(cycle) + + seq { yield! sortedQueue } diff --git a/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs b/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs index ba50a29..13e5b52 100644 --- a/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs +++ b/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs @@ -2,11 +2,98 @@ namespace EntityFrameworkCore.FSharp open System open System.Reflection +open System.Text + +module internal rec SharedTypeExtensions = + + let builtInTypeNames = + [ + (typeof, "bool") + (typeof, "byte") + (typeof, "sbyte") + (typeof, "char") + (typeof, "Int16") + (typeof, "int") + (typeof, "Int64") + (typeof, "UInt16") + (typeof, "UInt32") + (typeof, "UInt64") + (typeof, "decimal") + (typeof, "float") + (typeof, "double") + (typeof, "string") + (typeof, "obj") + ] + |> readOnlyDict + + let processType (t:Type) useFullName (sb:StringBuilder) = + if t.IsGenericType then + let genericArguments = t.GetGenericArguments() + processGenericType t genericArguments (genericArguments.Length) useFullName sb + elif t.IsArray then + processArrayType t useFullName sb + else + match builtInTypeNames.TryGetValue t with + | (true, builtInName) -> sb.Append(builtInName) + | _ -> + let name = if useFullName then t.FullName else t.Name + sb.Append(name) + + let rec processGenericType t genericArguments length useFullName (sb:StringBuilder) = + let offset = if t.IsNested then t.DeclaringType.GetGenericArguments().Length else 0 + + if useFullName then + if t.IsNested then + processGenericType t.DeclaringType genericArguments offset useFullName sb |> ignore + sb.Append("+") |> ignore + else + sb.Append(t.Namespace).Append(".") |> ignore + + + let genericPartIndex = t.Name.IndexOf("`") + + if genericPartIndex <= 0 then + sb.Append(t.Name) + else + sb.Append(t.Name, 0, genericPartIndex).Append("<") |> ignore + + for i = offset to length do + processType genericArguments.[i] useFullName sb |> ignore + if (i+1) <> length then + sb.Append(',') |> ignore + if (not (genericArguments.[i+1].IsGenericParameter)) then + sb.Append(' ') |> ignore + + sb.Append(">") + + let processArrayType (t:Type) useFullName (sb:StringBuilder) = + let mutable innerType = t + while (innerType.IsArray) do + innerType <- innerType.GetElementType() + + processType innerType useFullName sb |> ignore + + while (innerType.IsArray) do + sb + .Append('[') + .Append(',', innerType.GetArrayRank() - 1) + .Append(']') |> ignore + innerType <- innerType.GetElementType() + sb + + let rec getNamespaces (t: Type) = + seq { + if builtInTypeNames.ContainsKey(t) |> not then + yield t.Namespace + + if t.IsGenericType then + for typeArgument in t.GenericTypeArguments do + for ns in (getNamespaces typeArgument) do + yield ns + } -module internal SharedTypeExtensions = - let isValidEntityType (t:Type) = - t.GetTypeInfo().IsClass + t.GetTypeInfo().IsClass let isNullableType (t:Type) = let typeInfo = t.GetTypeInfo() @@ -47,7 +134,7 @@ module internal SharedTypeExtensions = else underlyingEnumType - let isInteger (t:Type) = + let isInteger (t:Type) = let t' = t |> unwrapNullableType |> unwrapOptionType t' = typeof || t' = typeof @@ -67,3 +154,14 @@ module internal SharedTypeExtensions = || t' = typeof || t' = typeof + let isSignedInteger (t:Type) = + let t' = t |> unwrapNullableType |> unwrapOptionType + t' = typeof + || t' = typeof + || t' = typeof + || t' = typeof + + let displayName (t:Type) useFullName = + let sb = StringBuilder() + processType t useFullName sb |> ignore + sb.ToString() diff --git a/src/EFCore.FSharp/paket.references b/src/EFCore.FSharp/paket.references index 5f955cf..c327af3 100644 --- a/src/EFCore.FSharp/paket.references +++ b/src/EFCore.FSharp/paket.references @@ -1,3 +1,4 @@ FSharp.Core Microsoft.SourceLink.GitHub Microsoft.EntityFrameworkCore.Design +NetTopologySuite.IO.SqlServerBytes \ No newline at end of file diff --git a/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs new file mode 100644 index 0000000..9179ae5 --- /dev/null +++ b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs @@ -0,0 +1,66 @@ +module EntityFrameworkCore.FSharp.Test.DbContextHelperTests + + +open System +open System.ComponentModel.DataAnnotations +open EntityFrameworkCore.FSharp.DbContextHelpers +open Expecto +open Microsoft.EntityFrameworkCore + +[] +type Blog = { + [] + Id : Guid + Title : string + Content : string +} + +type MyContext () = + inherit DbContext() + + [] + val mutable private _blogs : DbSet + member this.Blogs with get() = this._blogs and set v = this._blogs <- v + + override __.OnConfiguring(options: DbContextOptionsBuilder) : unit = + options.UseSqlite("Data Source=dbContextHelperTests.db") |> ignore + +let createContext b = + let ctx = new MyContext() + + ctx.Database.EnsureDeleted() |> ignore + ctx.Database.EnsureCreated() |> ignore + + ctx.Blogs.Add b |> ignore + ctx.SaveChanges() |> ignore + ctx + +[] +let DbContextHelperTests = + testList "DbContextHelperTests" [ + + test "updateEntity works as expected" { + + let original = { + Id = (Guid.NewGuid()) + Title = "My Title" + Content = "My original content" + } + + use ctx = createContext original + + let modified = { original with Title = "My New Title" } + + updateEntity ctx (fun b -> b.Id :> obj) modified |> ignore + + let expected = { + Id = original.Id + Title = "My New Title" + Content = "My original content" + } + + let actual = ctx.Blogs.Find original.Id + + Expect.equal actual expected "Record in context should match" + } + ] diff --git a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj index 97acb0c..afd1177 100644 --- a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj +++ b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj @@ -2,8 +2,8 @@ Exe - netcoreapp3.1 - false + net5.0 + false @@ -12,6 +12,7 @@ + @@ -19,9 +20,13 @@ + + + + @@ -29,3 +34,4 @@ + diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs new file mode 100644 index 0000000..7cbf989 --- /dev/null +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs @@ -0,0 +1,382 @@ +namespace EntityFrameworkCore.FSharp.Test.Migrations.Design + +open System +open System.Data.Common +open System.Data.SqlTypes +open System.Linq +open System.Linq.Expressions +open System.Numerics +open System.Reflection +open Microsoft.EntityFrameworkCore.Design.Internal +open Microsoft.EntityFrameworkCore.Infrastructure +open Microsoft.EntityFrameworkCore.Migrations.Design +open Microsoft.EntityFrameworkCore.Migrations.Operations +open Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal +open Microsoft.EntityFrameworkCore.Storage +open Microsoft.EntityFrameworkCore.Storage.ValueConversion +open Microsoft.EntityFrameworkCore.TestUtilities +open Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal +open NetTopologySuite +open NetTopologySuite.Geometries +open NetTopologySuite.IO +open Expecto + +open EntityFrameworkCore.FSharp.Internal +open EntityFrameworkCore.FSharp.Migrations.Design +open EntityFrameworkCore.FSharp.Test.TestUtilities +open Microsoft.EntityFrameworkCore.Migrations +open System.Text +open System.Data +open Microsoft.Data.SqlClient + +type GeometryValueCoverter<'geometry when 'geometry :> Geometry>(reader : SqlServerBytesReader, writer : SqlServerBytesWriter) = + inherit ValueConverter<'geometry, SqlBytes>( + (fun g -> SqlBytes(writer.Write g)), + (fun b -> reader.Read(b.Value) :?> 'geometry) + ) + +module Helpers = + + let createConverter (geometryServices:NtsGeometryServices) (storeType: string) = + let isGeography = + String.Equals(storeType, "geography", StringComparison.OrdinalIgnoreCase) + + let reader = SqlServerBytesReader(geometryServices, IsGeography = isGeography) + + let writer = SqlServerBytesWriter (IsGeography = isGeography) + + GeometryValueCoverter<'geometry>(reader, writer) + +type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> (geometryServices:NtsGeometryServices, storeType: string) = + inherit RelationalGeometryTypeMapping<'geometry, SqlBytes>((Helpers.createConverter geometryServices storeType), storeType) + + let isGeography = + String.Equals(storeType, "geography", StringComparison.OrdinalIgnoreCase) + + let getSqlBytes = typeof.GetRuntimeMethod("GetSqlBytes", [| typeof |]) + + let createSqlDbTypeAccessor paramType = + let paramParam = Expression.Parameter(typeof, "parameter") + let valueParam = Expression.Parameter(typeof, "value") + + Expression.Lambda>( + Expression.Call( + Expression.Convert(paramParam, paramType), + paramType.GetProperty("SqlDbType").SetMethod, + valueParam), + paramParam, + valueParam).Compile() + + let createUdtTypeNameAccessor(paramType) = + + let paramParam = Expression.Parameter(typeof, "parameter") + let valueParam = Expression.Parameter(typeof, "value") + + Expression.Lambda>( + Expression.Call( + Expression.Convert(paramParam, paramType), + paramType.GetProperty("UdtTypeName").SetMethod, + valueParam), + paramParam, + valueParam).Compile() + + override __.Clone(parameters: RelationalTypeMapping.RelationalTypeMappingParameters) = + SqlServerGeometryTypeMapping<'geometry>(geometryServices, storeType) :> RelationalTypeMapping + + override __.GenerateNonNullSqlLiteral(value) = + let builder = new StringBuilder() + let geometry = value :?> Geometry + let defaultSrid = (geometry = (Point.Empty :> Geometry)) || (geometry.SRID = (if isGeography then 4326 else 0)) + + let g = if isGeography then "geography" else "geometry" + let m = if defaultSrid then "Parse" else "STGeomFromText" + + let a = (WKTWriter.ForMicrosoftSqlServer()).Write(geometry) + + builder + .Append(g) + .Append("::") + .Append(m) + .Append("('") + .Append(a) + .Append("'") |> ignore + + if (not defaultSrid) then + builder + .Append(", ") + .Append(geometry.SRID) |> ignore + + builder.Append(")") |> ignore + + builder.ToString() + + override __.GetDataReaderMethod() = getSqlBytes + + override __.AsText value = + (value :?> Geometry).AsText() + + override __.GetSrid value = + (value :?> Geometry).SRID + + override __.WKTReaderType = typeof + + override __.ConfigureParameter parameter = + let t = parameter.GetType() + + if parameter.Value = (DBNull.Value :> obj) then + parameter.Value <- SqlBytes.Null + + let sqlDbTypeSetter = createSqlDbTypeAccessor t + let udtTypeNameSetter = createUdtTypeNameAccessor t + + sqlDbTypeSetter.Invoke(parameter, SqlDbType.Udt) + udtTypeNameSetter.Invoke(parameter, (if isGeography then "geography" else "geometry")) + +type SqlServerNetTopologySuiteTypeMappingSourcePlugin (geometryServices) = + + let spatialStoresTypes = Set.ofList ["geometry"; "geography"] + + let notNull a = not (isNull a) + + interface IRelationalTypeMappingSourcePlugin with + + member __.FindMapping(mappingInfo) = + let clrType = mappingInfo.ClrType + let storeTypeName = mappingInfo.StoreTypeName + + if typeof.IsAssignableFrom(clrType) || (notNull storeTypeName && spatialStoresTypes.Contains(storeTypeName)) then + let genericType = if notNull clrType then clrType else typeof + let storeName = if notNull storeTypeName then storeTypeName else "geography" + + let instance = + Activator.CreateInstance( + typedefof>.MakeGenericType(genericType), + geometryServices, + storeName) + + (instance :?> RelationalTypeMapping) + else null + + +module FSharpMigrationOperationGeneratorTest = + + let _eol = Environment.NewLine + + let join separator (lines : string seq) = + String.Join(separator, lines) + + let createGenerator () = + FSharpMigrationOperationGenerator( + FSharpHelper( + SqlServerTypeMappingSource( + TestServiceFactory.Instance.Create(), + TestServiceFactory.Instance.Create()))) :> ICSharpMigrationOperationGenerator + + let Test<'a when 'a :> MigrationOperation> (operation:'a) (expectedCode:string) (``assert``:('a -> unit)) = + + let generator = + FSharpMigrationOperationGenerator( + FSharpHelper( + SqlServerTypeMappingSource( + TestServiceFactory.Instance.Create(), + RelationalTypeMappingSourceDependencies( + [| + SqlServerNetTopologySuiteTypeMappingSourcePlugin(NtsGeometryServices.Instance) + |])))) + + let builder = IndentedStringBuilder() + + builder.AppendLine "open System" |> ignore + builder.AppendLine "open Microsoft.EntityFrameworkCore.Migrations" |> ignore + builder.AppendLine "open NetTopologySuite.Geometries" |> ignore + builder.AppendLine "" |> ignore + builder.AppendLine "module OperationsFactory =" |> ignore + builder.IncrementIndent() |> ignore + builder.AppendLine "" |> ignore + builder.AppendLine "let Create(mb: MigrationBuilder) =" |> ignore + + let expected = IndentedStringBuilder() + expected.AppendLines (builder.ToString(), false) |> ignore + expected.IncrementIndent() |> ignore + expected.IncrementIndent() |> ignore + expected.AppendLines (expectedCode, false) |> ignore + + + builder.IncrementIndent() |> ignore + (generator :> ICSharpMigrationOperationGenerator).Generate("mb", [| operation |], builder) + let code = builder.ToString() + + Expect.equal (code.Trim()) ((expected.ToString()).Trim()) "Should be equal" + + let build = { + TargetDir = "" + Sources = [ + code + ] + } + + let references = [| + "System.Collections" + "System.Net.Requests" + "System.Net.WebClient" + "System.Runtime" + "System.Runtime.Numerics" + "Microsoft.EntityFrameworkCore.Relational" + "NetTopologySuite" + |] + + let assembly = build.BuildInMemory(references) + let factoryType = assembly.GetTypes() |> Seq.find(fun m -> m.Name = "OperationsFactory") + let createMethod = factoryType.GetMethod("Create") + let mb = MigrationBuilder(activeProvider = null) + createMethod.Invoke(null, [| mb |]) |> ignore + let result = mb.Operations.Cast<'a>().Single() + + ``assert`` result + + [] + let FSharpMigrationOperationGeneratorTest = + testList "FSharpMigrationOperationGeneratorTest" [ + + test "Generate separates operations by a blank line" { + let generator = createGenerator() + let builder = IndentedStringBuilder() + + generator.Generate( + "mb", + [| SqlOperation ( Sql = "-- Don't stand so" ); SqlOperation ( Sql = "-- close to me" ) |], + builder) + + let expected = "mb.Sql(\"-- Don't stand so\") |> ignore" + _eol + _eol + "mb.Sql(\"-- close to me\") |> ignore" + _eol + _eol + let actual = builder.ToString() + + Expect.equal expected actual "Should be equal" + } + + test "AddColumnOperation required args" { + let op = AddColumnOperation(Name = "Id", Table = "Post", ClrType = typeof) + let expected = + seq { + "mb.AddColumn(" + " name = \"Id\"" + " ,table = \"Post\"" + " ,nullable = false" + " ) |> ignore" + } |> join _eol + + let ``assert`` (o : AddColumnOperation) = + Expect.equal o.Name "Id" "Should be equal" + Expect.equal o.Table "Post" "Should be equal" + Expect.equal o.ClrType typeof "Should be equal" + + Test op expected ``assert`` + } + + test "CreateTableOperation optional args" { + let op = CreateTableOperation(Name = "MyTable", Schema = "MySchema") + op.Columns.Add <| AddColumnOperation(Name = "Id", Table = "MyTable", ClrType = typeof) + + let expected = + seq { + "mb.CreateTable(" + " name = \"MyTable\"" + " ,schema = \"MySchema\"" + " ,columns = (fun table -> " + " {|" + " Id =" + " table.Column(" + " nullable = false" + " )" + " |})" + ") |> ignore" + } |> join _eol + + let ``assert`` (o : CreateTableOperation) = + Expect.equal o.Name "MyTable" "Should be equal" + Expect.equal o.Schema "MySchema" "Should be equal" + Expect.equal o.Columns.Count 1 "Should have one column" + + let c = o.Columns.[0] + + Expect.equal c.ClrType typeof "Should be equal" + + Test op expected ``assert`` + } + + test "AddForeignKey" { + let op = + AddForeignKeyOperation( + Name = "FK_Test", + Table = "MyTable", + Columns = [| "MyColumn" |], + PrincipalTable = "PrincipalTable", + PrincipalColumns = [| "Id" |]) + + let expected = + seq { + "mb.AddForeignKey(" + " name = \"FK_Test\"" + " ,table = \"MyTable\"" + " ,column = \"MyColumn\"" + " ,principalTable = \"PrincipalTable\"" + " ,principalColumn = \"Id\"" + ") |> ignore" + } |> join _eol + + let ``assert`` (o : AddForeignKeyOperation) = + Expect.equal o.Name "FK_Test" "Should be equal" + Expect.equal o.Table "MyTable" "Should be equal" + Expect.equal o.PrincipalTable "PrincipalTable" "Should be equal" + + Test op expected ``assert`` + } + + test "AddPrimaryKey" { + let op = + AddPrimaryKeyOperation( + Name = "PK_Test", + Table = "MyTable", + Columns = [| "MyColumn" |] + ) + + let expected = + seq { + "mb.AddPrimaryKey(" + " name = \"PK_Test\"" + " ,table = \"MyTable\"" + " ,column = \"MyColumn\"" + ") |> ignore" + } |> join _eol + + let ``assert`` (o : AddPrimaryKeyOperation) = + Expect.equal o.Name "PK_Test" "Should be equal" + Expect.equal o.Table "MyTable" "Should be equal" + + Test op expected ``assert`` + } + + test "AddUniqueConstraint" { + let op = + AddUniqueConstraintOperation( + Name = "UQ_Test", + Table = "MyTable", + Columns = [| "MyColumn" |] + ) + + let expected = + seq { + "mb.AddUniqueConstraint(" + " name = \"UQ_Test\"" + " ,table = \"MyTable\"" + " ,column = \"MyColumn\"" + ") |> ignore" + } |> join _eol + + let ``assert`` (o : AddUniqueConstraintOperation) = + Expect.equal o.Name "UQ_Test" "Should be equal" + Expect.equal o.Table "MyTable" "Should be equal" + + Test op expected ``assert`` + } + + ] diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs index 777a3e9..b931b01 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs @@ -1,33 +1,38 @@ -namespace EntityFrameworkCore.FSharp.Test.Migrations.Design +namespace EntityFrameworkCore.FSharp.Test.Migrations.Design open System open System.Collections.Generic -open Microsoft.EntityFrameworkCore.Internal -open Microsoft.EntityFrameworkCore.Metadata +open System.Linq.Expressions +open System.Text +open System.Text.RegularExpressions + +open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.ChangeTracking open Microsoft.EntityFrameworkCore.Metadata.Internal +open Microsoft.EntityFrameworkCore.Migrations +open Microsoft.EntityFrameworkCore.Migrations.Operations +open Microsoft.EntityFrameworkCore.SqlServer.Design.Internal +open Microsoft.EntityFrameworkCore.Storage.ValueConversion +open Microsoft.EntityFrameworkCore.Migrations.Design +open Microsoft.EntityFrameworkCore.Infrastructure +open Microsoft.EntityFrameworkCore.Design +open Microsoft.EntityFrameworkCore.Metadata open Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal open Microsoft.EntityFrameworkCore.Storage open Microsoft.EntityFrameworkCore.TestUtilities +open Microsoft.EntityFrameworkCore.ValueGeneration open EntityFrameworkCore.FSharp.Internal open EntityFrameworkCore.FSharp.Migrations.Design open EntityFrameworkCore.FSharp.Test.TestUtilities open Expecto -open Microsoft.EntityFrameworkCore -open Microsoft.EntityFrameworkCore.Storage.ValueConversion -open Microsoft.EntityFrameworkCore.Migrations.Design -open Microsoft.EntityFrameworkCore.Infrastructure -open Microsoft.Extensions.DependencyInjection -open Microsoft.EntityFrameworkCore.Design -open Microsoft.EntityFrameworkCore.Migrations.Operations -open System.Text.RegularExpressions -open Microsoft.EntityFrameworkCore.ChangeTracking -open Microsoft.EntityFrameworkCore.Migrations -type TestFSharpSnapshotGenerator (dependencies, mappingSource : IRelationalTypeMappingSource) = - inherit FSharpSnapshotGenerator(dependencies, mappingSource) +type TestFSharpSnapshotGenerator (dependencies, + mappingSource: IRelationalTypeMappingSource, + annotationCodeGenerator: IAnnotationCodeGenerator) = + inherit FSharpSnapshotGenerator(dependencies, mappingSource, annotationCodeGenerator) member this.TestGenerateEntityTypeAnnotations builderName entityType stringBuilder = this.generateEntityTypeAnnotations builderName entityType stringBuilder @@ -43,7 +48,7 @@ type WithAnnotations() = type Derived() = inherit WithAnnotations() -type RawEnum = +type private RawEnum = | A = 0 | B = 1 @@ -52,18 +57,73 @@ type MyContext() = module FSharpMigrationsGeneratorTest = - let compileModelSnapshot (modelSnapshotCode: string) (modelSnapshotTypeName: string) = - let references = - [| - "Microsoft.EntityFrameworkCore" - "Microsoft.EntityFrameworkCore.Relational" - |] + let getRequiredReferences() = + let runtimeNames = + [ + "mscorlib.dll" + "System.Private.CoreLib.dll" + "System.Runtime.dll" + "netstandard.dll" + "System.Runtime.Extensions.dll" + "System.Console.dll" + "System.Collections.dll" + "System.Resources.ResourceManager.dll" + "System.Collections.Concurrent.dll" + "System.Threading.Tasks.dll" + "System.Threading.dll" + "System.Threading.ThreadPool.dll" + "System.Threading.Thread.dll" + "System.Diagnostics.TraceSource.dll" + "System.Buffers.dll" + "System.Globalization.dll" + "System.IO.FileSystem.dll" + "System.Runtime.InteropServices.dll" + "System.Runtime.Numerics.dll" + "System.Net.Requests.dll" + "System.Linq.Expressions.dll" + "System.Net.WebClient.dll" + "System.ObjectModel.dll" + "System.ComponentModel.dll" + "System.Data.Common.dll" + "System.Text.RegularExpressions.dll" + ] + + let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() - let sources = + let localNames = [ - modelSnapshotCode + "FSharp.Core.dll" + "FSharp.Compiler.Service.dll" + "Microsoft.EntityFrameworkCore.dll" + "Microsoft.EntityFrameworkCore.Abstractions.dll" + "Microsoft.EntityFrameworkCore.Design.dll" + "Microsoft.EntityFrameworkCore.Proxies.dll" + "Microsoft.EntityFrameworkCore.Relational.dll" + "Microsoft.EntityFrameworkCore.Sqlite.dll" + "Microsoft.EntityFrameworkCore.SqlServer.dll" + "EntityFrameworkCore.FSharp.dll" + $"{thisAssembly.GetName().Name}.dll" ] + let runtimeDir = + System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() + + let runtimeRefs = + runtimeNames + |> List.map(fun r -> runtimeDir + r) + + let localRefs = + let location = thisAssembly.Location.Replace(thisAssembly.GetName().Name + ".dll", "") + localNames + |> List.map(fun s -> location + s) + + runtimeRefs @ localRefs |> List.toArray + + let compileModelSnapshot (modelSnapshotCode: string) (modelSnapshotTypeName: string) = + let references = getRequiredReferences() + + let sources = [ modelSnapshotCode ] + let build = { Sources = sources; TargetDir = null } let assembly = build.BuildInMemory references @@ -73,7 +133,7 @@ module FSharpMigrationsGeneratorTest = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(snapshotType) Expect.isNotNull contextTypeAttribute "Should not be null" - Expect.equal contextTypeAttribute.ContextType typeof "Should be equal" + Expect.equal contextTypeAttribute.ContextType.FullName typeof.FullName "Should be equal" Activator.CreateInstance(snapshotType) :?> ModelSnapshot @@ -81,43 +141,65 @@ module FSharpMigrationsGeneratorTest = let nl = Environment.NewLine let createMigrationsCodeGenerator() = + let serverTypeMappingSource = SqlServerTypeMappingSource( TestServiceFactory.Instance.Create(), TestServiceFactory.Instance.Create()) + let sqlServerAnnotationCodeGenerator = + SqlServerAnnotationCodeGenerator( + AnnotationCodeGeneratorDependencies(serverTypeMappingSource)); + + let annotationCodeGenerator = + AnnotationCodeGenerator(AnnotationCodeGeneratorDependencies(serverTypeMappingSource)) + let codeHelper = FSharpHelper(serverTypeMappingSource) let generator = FSharpMigrationsGenerator( - MigrationsCodeGeneratorDependencies(serverTypeMappingSource), + MigrationsCodeGeneratorDependencies(serverTypeMappingSource, sqlServerAnnotationCodeGenerator), FSharpMigrationsGeneratorDependencies( codeHelper, FSharpMigrationOperationGenerator(codeHelper), - FSharpSnapshotGenerator(codeHelper, serverTypeMappingSource))) + FSharpSnapshotGenerator(codeHelper, serverTypeMappingSource, annotationCodeGenerator))) (serverTypeMappingSource, codeHelper, generator) - let missingAnnotationCheck (createMetadataItem: ModelBuilder -> IMutableAnnotatable) (invalidAnnotations:HashSet) (validAnnotations:IDictionary) (generationDefault : string) (test: TestFSharpSnapshotGenerator -> IMutableAnnotatable -> IndentedStringBuilder -> unit) = + let missingAnnotationCheck (createMetadataItem: ModelBuilder -> IMutableAnnotatable) + (invalidAnnotations:HashSet) + (validAnnotations:IDictionary) + (generationDefault : string) + (test: TestFSharpSnapshotGenerator -> IMutableAnnotatable -> IndentedStringBuilder -> unit) = - let typeMappingSource = + let sqlServerTypeMappingSource = SqlServerTypeMappingSource( TestServiceFactory.Instance.Create(), TestServiceFactory.Instance.Create()) let codeHelper = - new FSharpHelper(typeMappingSource) + FSharpHelper(sqlServerTypeMappingSource) + + let annotationCodeGenerator = + AnnotationCodeGenerator(AnnotationCodeGeneratorDependencies(sqlServerTypeMappingSource)) - let generator = TestFSharpSnapshotGenerator(codeHelper, typeMappingSource); + let generator = TestFSharpSnapshotGenerator(codeHelper, sqlServerTypeMappingSource, annotationCodeGenerator) - let caNames = - (typeof).GetFields() - |> Seq.filter(fun f -> f.FieldType = typeof) + let coreAnnotations = + typeof.GetFields() + |> Seq.filter (fun f -> f.FieldType = typeof) |> Seq.toList + coreAnnotations + |> List.iter (fun field -> + let annotationName = field.GetValue(null) |> string + Expect.isTrue + (CoreAnnotationNames.AllNames.Contains(annotationName)) + $"CoreAnnotations.AllNames doesn't contain {annotationName}") + let rlNames = (typeof).GetFields() |> Seq.toList - let allAnnotations = (caNames @ rlNames) |> Seq.filter (fun f -> f.Name <> "Prefix") + let allAnnotations = (coreAnnotations @ rlNames) |> Seq.filter (fun f -> f.Name <> "Prefix") allAnnotations |> Seq.iter(fun f -> @@ -127,12 +209,14 @@ module FSharpMigrationsGeneratorTest = let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() let metadataItem = createMetadataItem modelBuilder - metadataItem.[annotationName] <- + let annotation = if validAnnotations.ContainsKey(annotationName) then fst validAnnotations.[annotationName] else null + metadataItem.SetAnnotation(annotationName, annotation) + modelBuilder.FinalizeModel() |> ignore let sb = IndentedStringBuilder() @@ -157,6 +241,65 @@ module FSharpMigrationsGeneratorTest = () + type EntityWithConstructorBinding(id: int) = + member this.Id with get() = id + + let myDbFunction(): int = failwith "Not implemented" + + [] + type Enum1 = + | Default = 0 + | One = 1 + | Two = 2 + + [] + type EntityWithEveryPrimitive = { + Boolean: bool + Byte: byte + ByteArray: byte[] + Char: char + DateTime: DateTime + DateTimeOffset: DateTimeOffset + Decimal: decimal + Double: double + Enum: Enum1 + StringEnum: Enum1 + Guid: Guid + Int16: int16 + Int32: int + Int64: int64 + NullableBoolean: Nullable + NullableByte: Nullable + NullableChar: Nullable + NullableDateTime: Nullable + NullableDateTimeOffset: Nullable + NullableDecimal: Nullable + NullableDouble: Nullable + NullableEnum: Nullable + NullableStringEnum: Nullable + NullableGuid: Nullable + NullableInt16: Nullable + NullableInt32: Nullable + NullableInt64: Nullable + NullableSByte: Nullable + NullableSingle: Nullable + NullableTimeSpan: Nullable + NullableUInt16: Nullable + NullableUInt32: Nullable + NullableUInt64: Nullable + SByte: sbyte + Single: float + String: string + TimeSpan: TimeSpan + UInt16: uint16 + UInt32: uint + UInt64: uint64 + mutable privateSetter: int + } with + member this.PrivateSetter + with get() = this.privateSetter + and private set v = this.privateSetter <- v + [] let FSharpMigrationsGeneratorTest = testList "FSharpMigrationsGeneratorTest" [ @@ -165,11 +308,12 @@ module FSharpMigrationsGeneratorTest = let notForEntityType = [ CoreAnnotationNames.MaxLength + CoreAnnotationNames.Precision + CoreAnnotationNames.Scale CoreAnnotationNames.Unicode CoreAnnotationNames.ProductVersion CoreAnnotationNames.ValueGeneratorFactory CoreAnnotationNames.OwnedTypes - CoreAnnotationNames.TypeMapping CoreAnnotationNames.ValueConverter CoreAnnotationNames.ValueComparer CoreAnnotationNames.KeyValueComparer @@ -181,17 +325,23 @@ module FSharpMigrationsGeneratorTest = CoreAnnotationNames.DuplicateServiceProperties RelationalAnnotationNames.ColumnName RelationalAnnotationNames.ColumnType + RelationalAnnotationNames.TableColumnMappings + RelationalAnnotationNames.ViewColumnMappings + RelationalAnnotationNames.SqlQueryColumnMappings + RelationalAnnotationNames.FunctionColumnMappings + RelationalAnnotationNames.RelationalOverrides RelationalAnnotationNames.DefaultValueSql RelationalAnnotationNames.ComputedColumnSql RelationalAnnotationNames.DefaultValue RelationalAnnotationNames.Name - RelationalAnnotationNames.SequencePrefix + RelationalAnnotationNames.Sequences RelationalAnnotationNames.CheckConstraints RelationalAnnotationNames.DefaultSchema RelationalAnnotationNames.Filter - RelationalAnnotationNames.DbFunction + RelationalAnnotationNames.DbFunctions RelationalAnnotationNames.MaxIdentifierLength RelationalAnnotationNames.IsFixedLength + RelationalAnnotationNames.Collation ] |> HashSet let toTable = nl + @"modelBuilder.ToTable(""WithAnnotations"") |> ignore" + nl @@ -232,10 +382,31 @@ module FSharpMigrationsGeneratorTest = RelationalAnnotationNames.Comment, ("My Comment" :> obj, toTable + nl - + "modelBuilder.HasComment" - + @"(""My Comment"") |> ignore" + + "modelBuilder" + + nl + + @" .HasComment(""My Comment"") |> ignore" + + nl) + ) + ( + CoreAnnotationNames.DefiningQuery, + (Expression.Lambda(Expression.Constant(null)) :> obj, "") + ) + ( + RelationalAnnotationNames.ViewName, ("MyView" :> obj, + nl + + "modelBuilder." + + "ToView" + + @"(""MyView"") |> ignore" + nl) ) + ( + RelationalAnnotationNames.FunctionName, + (null, "") + ) + ( + RelationalAnnotationNames.SqlQuery, + (null, "") + ) ] |> dict missingAnnotationCheck @@ -246,12 +417,13 @@ module FSharpMigrationsGeneratorTest = (fun g m b -> g.generateEntityTypeAnnotations "modelBuilder" (m :> obj :?> _) b |> ignore) } - test "Test new annotations handled for property types" { + test "Test new annotations handled for properties" { let notForProperty = [ CoreAnnotationNames.ProductVersion CoreAnnotationNames.OwnedTypes CoreAnnotationNames.ConstructorBinding + CoreAnnotationNames.ServiceOnlyConstructorBinding CoreAnnotationNames.NavigationAccessMode CoreAnnotationNames.EagerLoaded CoreAnnotationNames.QueryFilter @@ -263,25 +435,32 @@ module FSharpMigrationsGeneratorTest = CoreAnnotationNames.AmbiguousNavigations CoreAnnotationNames.DuplicateServiceProperties RelationalAnnotationNames.TableName + RelationalAnnotationNames.ViewName RelationalAnnotationNames.Schema + RelationalAnnotationNames.ViewSchema RelationalAnnotationNames.DefaultSchema + RelationalAnnotationNames.DefaultMappings + RelationalAnnotationNames.TableMappings + RelationalAnnotationNames.ViewMappings + RelationalAnnotationNames.SqlQueryMappings RelationalAnnotationNames.Name - RelationalAnnotationNames.SequencePrefix + RelationalAnnotationNames.Sequences RelationalAnnotationNames.CheckConstraints RelationalAnnotationNames.Filter - RelationalAnnotationNames.DbFunction + RelationalAnnotationNames.DbFunctions RelationalAnnotationNames.MaxIdentifierLength ] |> HashSet let columnMapping = - nl + @".HasColumnType(""default_int_mapping"")" + @$"{nl}.HasColumnType(""default_int_mapping"")" let forProperty = [ - ( CoreAnnotationNames.MaxLength, (256 :> obj, columnMapping + nl + ".HasMaxLength(256) |> ignore")) - ( CoreAnnotationNames.Unicode, (false :> obj, columnMapping + nl + ".IsUnicode(false) |> ignore")) + ( CoreAnnotationNames.MaxLength, (256 :> obj, $"{nl}.HasMaxLength(256){columnMapping} |> ignore")) + ( CoreAnnotationNames.Precision, (4 :> obj, $"{nl}.HasPrecision(4){columnMapping} |> ignore") ) + ( CoreAnnotationNames.Unicode, (false :> obj, $"{nl}.IsUnicode(false){columnMapping} |> ignore")) ( - CoreAnnotationNames.ValueConverter, (new ValueConverter((fun v -> v |> int64), (fun v -> v |> int), null) :> obj, + CoreAnnotationNames.ValueConverter, (ValueConverter((fun v -> v |> int64), (fun v -> v |> int), null) :> obj, nl+ @".HasColumnType(""default_long_mapping"") |> ignore") ) ( @@ -290,7 +469,7 @@ module FSharpMigrationsGeneratorTest = ) ( RelationalAnnotationNames.ColumnName, - ("MyColumn" :> obj, nl + @".HasColumnName(""MyColumn"")" + columnMapping + " |> ignore") + ("MyColumn" :> obj, columnMapping + nl + @".HasColumnName(""MyColumn"") |> ignore") ) ( RelationalAnnotationNames.ColumnType, @@ -308,10 +487,6 @@ module FSharpMigrationsGeneratorTest = RelationalAnnotationNames.DefaultValue, ("1" :> obj, columnMapping + nl + @".HasDefaultValue(""1"") |> ignore") ) - ( - CoreAnnotationNames.TypeMapping, - (new LongTypeMapping("bigint") :> obj, nl + @".HasColumnType(""bigint"") |> ignore") - ) ( RelationalAnnotationNames.IsFixedLength, (true :> obj, columnMapping + nl + @".IsFixedLength(true) |> ignore") @@ -320,6 +495,10 @@ module FSharpMigrationsGeneratorTest = RelationalAnnotationNames.Comment, ("My Comment" :> obj, columnMapping + nl + @".HasComment(""My Comment"") |> ignore") ) + ( + RelationalAnnotationNames.Collation, + ("Some Collation" :> obj, $@"{columnMapping}{nl}.UseCollation(""Some Collation"") |> ignore") + ) ] |> dict missingAnnotationCheck @@ -330,34 +509,532 @@ module FSharpMigrationsGeneratorTest = (fun g m b -> g.generatePropertyAnnotations (m :> obj :?> _) b |> ignore) } - // test "Snapshot with enum discriminator uses converted values" { - // let (serverTypeMappingSource, _, generator) = createMigrationsCodeGenerator() + test "Snapshot with enum discriminator uses converted values" { + + let sqlServerTypeMappingSource = + SqlServerTypeMappingSource( + TestServiceFactory.Instance.Create(), + TestServiceFactory.Instance.Create()) + + let codeHelper = + FSharpHelper(sqlServerTypeMappingSource); + + let sqlServerAnnotationCodeGenerator = + SqlServerAnnotationCodeGenerator( + AnnotationCodeGeneratorDependencies(sqlServerTypeMappingSource)) + + let generator = + FSharpMigrationsGenerator( + MigrationsCodeGeneratorDependencies( + sqlServerTypeMappingSource, + sqlServerAnnotationCodeGenerator), + FSharpMigrationsGeneratorDependencies( + codeHelper, + FSharpMigrationOperationGenerator(codeHelper), + FSharpSnapshotGenerator( + codeHelper, sqlServerTypeMappingSource, sqlServerAnnotationCodeGenerator))); + + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + + modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore + + modelBuilder.Entity( + fun eb -> + eb.HasDiscriminator("EnumDiscriminator") + .HasValue(RawEnum.A) + .HasValue(RawEnum.B) |> ignore + eb.Property("EnumDiscriminator").HasConversion() |> ignore + ) |> ignore + + modelBuilder.FinalizeModel() |> ignore + + let modelSnapshotCode = + generator.GenerateSnapshot( + "MyNamespace", + typeof, + "MySnapshot", + modelBuilder.Model) + + let snapshotModel = (compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot").Model + + Expect.equal (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) ((int RawEnum.A) :> obj) "Should be equal" + Expect.equal (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) ((int RawEnum.B) :> obj) "Should be equal" + } + + test "Migrations compile" { + let (_, _, generator) = createMigrationsCodeGenerator() + + let migrationCode = + generator.GenerateMigration( + "MyNamespace", + "MyMigration", + [ + let sqlOperation = + SqlOperation(Sql = "-- TEST") + sqlOperation.["Some:EnumValue"] <- RegexOptions.Multiline + sqlOperation + AlterColumnOperation ( + Name = "C1", + Table = "C2", + ClrType = typeof, + OldColumn = AddColumnOperation ( ClrType = typeof ) + ) + AddColumnOperation ( + Name = "C3", + Table = "T1", + ClrType = typeof + ) + + let insertValues: obj[,] = Array2D.create 1 3 (1 :> obj) + insertValues.[0,1] <- null + + InsertDataOperation ( + Table = "T1", + Columns = [| "Id"; "C2"; "C3" |], + Values = insertValues + ) + ], + []) + + Expect.equal migrationCode "// intentionally empty" "No support for partial class. Code is built in GenerateMetadata" - // let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = ModelBuilder() - // modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore + modelBuilder.HasAnnotation("Some:EnumValue", RegexOptions.Multiline) |> ignore + modelBuilder.HasAnnotation(RelationalAnnotationNames.DbFunctions, obj()) |> ignore + modelBuilder.Entity("T1", fun eb -> + eb.Property("Id") |> ignore + eb.Property("C2").IsRequired() |> ignore + eb.Property("C3") |> ignore + eb.HasKey("Id") |> ignore) |> ignore - // modelBuilder.Entity(fun eb -> - // eb.HasDiscriminator("EnumDiscriminator") - // .HasValue(RawEnum.A) - // .HasValue(RawEnum.B) |> ignore - // eb.Property("EnumDiscriminator").HasConversion() |> ignore) - // |> ignore + let migrationMetadataCode = + generator.GenerateMetadata( + "MyNamespace", + typeof, + "MyMigration", + "20150511161616_MyMigration", + modelBuilder.Model) + + // TODO: fix formatting on below + let expectedCode = """// +namespace MyNamespace + +open System.Text.RegularExpressions +open EntityFrameworkCore.FSharp.Test.Migrations.Design +open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.ChangeTracking +open Microsoft.EntityFrameworkCore.Infrastructure +open Microsoft.EntityFrameworkCore.Metadata +open Microsoft.EntityFrameworkCore.Metadata.Internal +open Microsoft.EntityFrameworkCore.Migrations +open Microsoft.EntityFrameworkCore.Storage +open Microsoft.EntityFrameworkCore.Storage.ValueConversion - // modelBuilder.FinalizeModel() |> ignore +[)>] +[] +type MyMigration() = + inherit Migration() - // let modelSnapshotCode = - // generator.GenerateSnapshot( - // "MyNamespace", - // typeof, - // "MySnapshot", - // modelBuilder.Model) + override this.Up(migrationBuilder:MigrationBuilder) = + migrationBuilder.Sql("-- TEST") + .Annotation("Some:EnumValue", RegexOptions.Multiline) |> ignore - // let snapshotModel = (compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot").Model + migrationBuilder.AlterColumn( + name = "C1" + ,table = "C2" + ,nullable = false + ,oldClrType = typedefof + ,oldNullable = false + ) |> ignore - // Expect.equal (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) ((int RawEnum.A) :> obj) "Should be equal" - // Expect.equal (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) ((int RawEnum.B) :> obj) "Should be equal" - // } + migrationBuilder.AddColumn( + name = "C3" + ,table = "T1" + ,nullable = false + ) |> ignore + migrationBuilder.InsertData( + table = "T1", + columns = [| "Id"; "C2"; "C3" |], + values = [| 1 :> obj; null; 1:> obj |] + ) |> ignore + + + override this.Down(migrationBuilder:MigrationBuilder) = + () + + override this.BuildTargetModel(modelBuilder: ModelBuilder) = + modelBuilder + .HasAnnotation("Some:EnumValue", RegexOptions.Multiline) + |> ignore + + modelBuilder.Entity("T1", (fun b -> + + b.Property("Id") + .HasColumnType("int") |> ignore + b.Property("C2") + .IsRequired() + .HasColumnType("nvarchar(max)") |> ignore + b.Property("C3") + .IsRequired() + .HasColumnType("int") |> ignore + + b.HasKey("Id") |> ignore + + b.ToTable("T1") |> ignore + + )) |> ignore + +""" + + Expect.equal migrationMetadataCode expectedCode "" + + let build = { Sources = [ migrationMetadataCode ]; TargetDir = null } + + let references = + getRequiredReferences() + |> Array.append ([| + "System.Text.RegularExpressions" + "Microsoft.EntityFrameworkCore" + "Microsoft.EntityFrameworkCore.Relational" + |]) + + let assembly = build.BuildInMemory(references) + + let migrationType = assembly.GetType("MyNamespace.MyMigration", throwOnError = true, ignoreCase = false) + let attribute = + migrationType.GetCustomAttributes(false) + |> Seq.choose (fun t -> + match t with + | :? DbContextAttribute as a -> Some a + | _ -> None) + |> Seq.head + + let migration = Activator.CreateInstance(migrationType) :?> Migration + + Expect.equal attribute.ContextType.FullName (typeof).FullName $"Expected context type {nameof MyContext}" + Expect.equal migration.UpOperations.Count 4 "Expected 4 up operations" + Expect.equal (migration.DownOperations.Count) 0 "Expected 0 down operations" + Expect.hasCountOf (migration.TargetModel.GetEntityTypes()) 1u (fun _ -> true) "Expected one entity" + } + + test "Snapshots compile" { + let (_, _, generator) = createMigrationsCodeGenerator() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder(skipValidation = true) + modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore + modelBuilder.Entity(fun x -> + x.Property(fun e -> e.Id) |> ignore + x.Property("PropertyWithValueGenerator").HasValueGenerator() |> ignore + ) |> ignore + + modelBuilder.HasDbFunction(myDbFunction) |> ignore + + let model = modelBuilder.Model + model.["Some:EnumValue"] <- RegexOptions.Multiline + + let entityType = model.AddEntityType("Cheese") + let property1 = entityType.AddProperty("Pickle", typeof) + + property1.SetValueConverter( + ValueConverter( + (fun v -> v.ToString()), + (fun v -> StringBuilder(v)), + (ConverterMappingHints(size = 10)))) + + let property2 = entityType.AddProperty("Ham", typeof) + property2.SetValueConverter( + ValueConverter( + (fun v -> v.ToString()), + (fun v -> Enum.Parse(typeof, v) :?> _), + (ConverterMappingHints(size = 10)))) + + entityType.SetPrimaryKey(property2) |> ignore + + modelBuilder.FinalizeModel() |> ignore + + let modelSnapshotCode = + generator.GenerateSnapshot( + "MyNamespace", + typeof, + "MySnapshot", + model) + + let expectedCode = "// +namespace MyNamespace + +open System +open System.Text.RegularExpressions +open EntityFrameworkCore.FSharp.Test.Migrations.Design +open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.Infrastructure +open Microsoft.EntityFrameworkCore.Metadata +open Microsoft.EntityFrameworkCore.Migrations +open Microsoft.EntityFrameworkCore.Storage.ValueConversion + +[)>] +type MySnapshot() = + inherit ModelSnapshot() + + override this.BuildModel(modelBuilder: ModelBuilder) = + modelBuilder + .HasAnnotation(\"Some:EnumValue\", RegexOptions.Multiline) + |> ignore + + modelBuilder.Entity(\"Cheese\", (fun b -> + + b.Property(\"Ham\") + .HasColumnType(\"just_string(10)\") |> ignore + b.Property(\"Pickle\") + .HasColumnType(\"just_string(10)\") |> ignore + + b.HasKey(\"Ham\") |> ignore + + b.ToTable(\"Cheese\") |> ignore + + )) |> ignore + + modelBuilder.Entity(\"EntityFrameworkCore.FSharp.Test.Migrations.Design.FSharpMigrationsGeneratorTest+EntityWithConstructorBinding\", (fun b -> + + b.Property(\"Id\") + .ValueGeneratedOnAdd() + .HasColumnType(\"default_int_mapping\") |> ignore + b.Property(\"PropertyWithValueGenerator\") + .IsRequired() + .HasColumnType(\"default_guid_mapping\") |> ignore + + b.HasKey(\"Id\") |> ignore + + b.ToTable(\"EntityWithConstructorBinding\") |> ignore + + )) |> ignore + +" + Expect.equal modelSnapshotCode expectedCode "" + + let snapshot = compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" + Expect.equal (snapshot.Model.GetEntityTypes() |> Seq.length) 2 "Expect 2 entity types" + } + + test "Snapshot with default values are round tripped" { + let (_, _, generator) = createMigrationsCodeGenerator() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder(); + modelBuilder.Entity(fun eb -> + eb.Property(fun e -> e.Boolean).HasDefaultValue(false) |> ignore + eb.Property(fun e -> e.Byte).HasDefaultValue(Byte.MinValue) |> ignore + eb.Property(fun e -> e.ByteArray).HasDefaultValue([| 0uy |]) |> ignore + eb.Property(fun e -> e.Char).HasDefaultValue('0') |> ignore + eb.Property(fun e -> e.DateTime).HasDefaultValue(DateTime.MinValue) |> ignore + eb.Property(fun e -> e.DateTimeOffset).HasDefaultValue(DateTimeOffset.MinValue) |> ignore + eb.Property(fun e -> e.Decimal).HasDefaultValue(Decimal.MinValue) |> ignore + eb.Property(fun e -> e.Double).HasDefaultValue(Double.MinValue) |> ignore //double.NegativeInfinity + eb.Property(fun e -> e.Enum).HasDefaultValue(Enum1.Default) |> ignore + eb.Property(fun e -> e.NullableEnum).HasDefaultValue(Enum1.Default).HasConversion() |> ignore + eb.Property(fun e -> e.Guid).HasDefaultValue(Guid.NewGuid()) |> ignore + eb.Property(fun e -> e.Int16).HasDefaultValue(Int16.MaxValue) |> ignore + eb.Property(fun e -> e.Int32).HasDefaultValue(Int32.MaxValue) |> ignore + eb.Property(fun e -> e.Int64).HasDefaultValue(Int64.MaxValue) |> ignore + eb.Property(fun e -> e.Single).HasDefaultValue(Single.Epsilon) |> ignore + eb.Property(fun e -> e.SByte).HasDefaultValue(SByte.MinValue) |> ignore + eb.Property(fun e -> e.String).HasDefaultValue("'\"'@\r\\\n") |> ignore + eb.Property(fun e -> e.TimeSpan).HasDefaultValue(TimeSpan.MaxValue) |> ignore + eb.Property(fun e -> e.UInt16).HasDefaultValue(UInt16.MinValue) |> ignore + eb.Property(fun e -> e.UInt32).HasDefaultValue(UInt32.MinValue) |> ignore + eb.Property(fun e -> e.UInt64).HasDefaultValue(UInt64.MinValue) |> ignore + eb.Property(fun e -> e.NullableBoolean).HasDefaultValue(true) |> ignore + eb.Property(fun e -> e.NullableByte).HasDefaultValue(Byte.MaxValue) |> ignore + eb.Property(fun e -> e.NullableChar).HasDefaultValue('\'') |> ignore + eb.Property(fun e -> e.NullableDateTime).HasDefaultValue(DateTime.MaxValue) |> ignore + eb.Property(fun e -> e.NullableDateTimeOffset).HasDefaultValue(DateTimeOffset.MaxValue) |> ignore + eb.Property(fun e -> e.NullableDecimal).HasDefaultValue(Decimal.MaxValue) |> ignore + eb.Property(fun e -> e.NullableDouble).HasDefaultValue(0.6822871999174) |> ignore + eb.Property(fun e -> e.NullableEnum).HasDefaultValue(Enum1.One ||| Enum1.Two) |> ignore + eb.Property(fun e -> e.NullableStringEnum).HasDefaultValue(Enum1.One).HasConversion() |> ignore + eb.Property(fun e -> e.NullableGuid).HasDefaultValue(Guid()) |> ignore + eb.Property(fun e -> e.NullableInt16).HasDefaultValue(Int16.MinValue) |> ignore + eb.Property(fun e -> e.NullableInt32).HasDefaultValue(Int32.MinValue) |> ignore + eb.Property(fun e -> e.NullableInt64).HasDefaultValue(Int64.MinValue) |> ignore + eb.Property(fun e -> e.NullableSingle).HasDefaultValue(0.3333333) |> ignore + eb.Property(fun e -> e.NullableSByte).HasDefaultValue(SByte.MinValue) |> ignore + eb.Property(fun e -> e.NullableTimeSpan).HasDefaultValue(TimeSpan.MinValue.Add(TimeSpan())) |> ignore + eb.Property(fun e -> e.NullableUInt16).HasDefaultValue(UInt16.MaxValue) |> ignore + eb.Property(fun e -> e.NullableUInt32).HasDefaultValue(UInt32.MaxValue) |> ignore + eb.Property(fun e -> e.NullableUInt64).HasDefaultValue(UInt64.MaxValue) |> ignore + + eb.HasKey(fun e -> e.Boolean :> obj) |> ignore + ) |> ignore + + modelBuilder.FinalizeModel() |> ignore + + let modelSnapshotCode = + generator.GenerateSnapshot( + "MyNamespace", + typeof, + "MySnapshot", + modelBuilder.Model) + + let snapshot = compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" + let entityType = snapshot.Model.GetEntityTypes() |> Seq.head + + Expect.equal (entityType |> Microsoft.EntityFrameworkCore.EntityTypeExtensions.DisplayName) typeof.FullName "" + + (modelBuilder.Model.GetEntityTypes() |> Seq.head).GetProperties() + |> Seq.iter (fun property -> + let expected = property.GetDefaultValue() + let defaultValue = entityType.FindProperty(property.Name).GetDefaultValue() + + let actual = + match expected |> Option.ofObj, defaultValue |> Option.ofObj with + | Some expected, Some actual' when expected.GetType().IsEnum -> + match actual' with + | :? String as a -> Enum.Parse(expected.GetType(), a) + | _ -> Enum.ToObject(expected.GetType(), actual') + | Some expected, Some actual' when actual'.GetType() <> expected.GetType() -> + Convert.ChangeType(actual', expected.GetType()) + | _ -> defaultValue + + if actual |> isNull |> not && expected |> isNull |> not then + Expect.equal + actual + expected + $"""Comparison failed for {if actual.GetType() = typeof> then $"Nullable<{(Nullable.GetUnderlyingType(actual.GetType()))}>" else property.ClrType.Name}""" + ) + } + + test "Namespaces imported for insert data" { + let (_, _, generator) = createMigrationsCodeGenerator() + + let _ = + generator.GenerateMigration( + "MyNamespace", + "MyMigration", + [ + let values = Array2D.create 2 2 (1 :> obj) + values.[0, 1] <- null + values.[1, 0] <- 2 :> _ + values.[1, 0] <- RegexOptions.Multiline :> _ + InsertDataOperation ( + Table = "MyTable", + Columns = [| "Id"; "MyColumn" |], + Values = values + ) + ], + [] + ) + + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder(skipValidation = true) + modelBuilder.Model.FinalizeModel() |> ignore + + let migration = + generator.GenerateMetadata( + "MyNamespace", + typeof, + "MyMigration", + "20150511161616_MyMigration", + modelBuilder.Model + ) + + Expect.stringContains migration "open System.Text.RegularExpressions" "" + } + + test "Namespaces imported for update data values" { + let (_, _, generator) = createMigrationsCodeGenerator() + + let _ = + generator.GenerateMigration( + "MyNamespace", + "MyMigration", + [ + UpdateDataOperation( + Table = "MyTable", + KeyColumns = [| "Id" |], + KeyValues = (Array2D.create 1 1 (1 :> _)), + Columns = [| "MyColumn" |], + Values = Array2D.create 1 1 (RegexOptions.Multiline :> _) + ) + ], + [] + ) + + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder(skipValidation = true) + modelBuilder.Model.FinalizeModel() |> ignore + + let migration = + generator.GenerateMetadata( + "MyNamespace", + typeof, + "MyMigration", + "20150511161616_MyMigration", + modelBuilder.Model + ) + + Expect.stringContains migration "open System.Text.RegularExpressions" "" + } + + test "Namespaces imported for update data KeyValues" { + let (_, _, generator) = createMigrationsCodeGenerator() + + let _ = + generator.GenerateMigration( + "MyNamespace", + "MyMigration", + [ + UpdateDataOperation( + Table = "MyTable", + KeyColumns = [| "Id" |], + KeyValues = (Array2D.create 1 1 (RegexOptions.Multiline :> _)), + Columns = [| "MyColumn" |], + Values = Array2D.create 1 1 (1 :> _) + ) + ], + [] + ) + + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder(skipValidation = true) + modelBuilder.Model.FinalizeModel() |> ignore + + let migration = + generator.GenerateMetadata( + "MyNamespace", + typeof, + "MyMigration", + "20150511161616_MyMigration", + modelBuilder.Model + ) + + Expect.stringContains migration "open System.Text.RegularExpressions" "" + } + + test "Namespaces imported for delete data" { + let (_, _, generator) = createMigrationsCodeGenerator() + + let _ = + generator.GenerateMigration( + "MyNamespace", + "MyMigration", + [ + DeleteDataOperation( + Table = "MyTable", + KeyColumns = [| "Id" |], + KeyValues = (Array2D.create 1 1 (RegexOptions.Multiline :> _)) + ) + ], + [] + ) + + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder(skipValidation = true) + modelBuilder.Model.FinalizeModel() |> ignore + + let migration = + generator.GenerateMetadata( + "MyNamespace", + typeof, + "MyMigration", + "20150511161616_MyMigration", + modelBuilder.Model + ) + + Expect.stringContains migration "open System.Text.RegularExpressions" "" + } ] diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs new file mode 100644 index 0000000..ca61c90 --- /dev/null +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs @@ -0,0 +1,224 @@ +namespace EntityFrameworkCore.FSharp.Test.Migrations.Design + +open System +open System.Collections.Generic +open System.IO +open System.Threading +open System.Threading.Tasks +open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.ChangeTracking.Internal +open Microsoft.EntityFrameworkCore.Design +open Microsoft.EntityFrameworkCore.Design.Internal +open Microsoft.EntityFrameworkCore.Diagnostics +open Microsoft.EntityFrameworkCore.Infrastructure +open Microsoft.EntityFrameworkCore.Infrastructure.Internal +open Microsoft.EntityFrameworkCore.Metadata +open Microsoft.EntityFrameworkCore.Metadata.Internal +open Microsoft.EntityFrameworkCore.Migrations +open Microsoft.EntityFrameworkCore.Migrations.Design +open Microsoft.EntityFrameworkCore.Migrations.Internal +open Microsoft.EntityFrameworkCore.SqlServer.Design.Internal +open Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal +open Microsoft.EntityFrameworkCore.Storage +open Microsoft.EntityFrameworkCore.TestUtilities +open Microsoft.EntityFrameworkCore.Update +open Microsoft.EntityFrameworkCore.Update.Internal +open Microsoft.Extensions.DependencyInjection + +open EntityFrameworkCore.FSharp.Internal +open EntityFrameworkCore.FSharp.Migrations.Design +open EntityFrameworkCore.FSharp.Test.TestUtilities + +open Expecto +open Microsoft.EntityFrameworkCore.Internal +open EntityFrameworkCore.FSharp.Test.TestUtilities.FakeProvider +open Microsoft.EntityFrameworkCore.Metadata.Conventions.Infrastructure + +type MockHistoryRepository () = + interface IHistoryRepository with + + member __.GetBeginIfExistsScript(migrationId) = null + + member __.GetBeginIfNotExistsScript(migrationId) = null + + member __.GetCreateScript() = null + + member __.GetCreateIfNotExistsScript() = null + + member __.GetEndIfScript() = null + + member __.Exists() = false + + member __.ExistsAsync(cancellationToken) = Task.FromResult(false) + + member __.GetAppliedMigrations() = null + + member __.GetAppliedMigrationsAsync(cancellationToken) = Task.FromResult>(null) + + member __.GetDeleteScript(migrationId) = null + + member __.GetInsertScript(row) = null + +type MockProvider () = + interface IDatabaseProvider with + member __.Name = "Mock.Provider" + member __.IsConfigured (options) = true + +type TestOperationReporter () = + + let messages = ResizeArray(); + + member __.Messages = messages + + member __.Clear() = messages.Clear() + + interface IOperationReporter with + + member __.WriteInformation(message) = messages.Add("info: " + message) + + member __.WriteVerbose(message) = messages.Add("verbose: " + message) + + member __.WriteWarning(message) = messages.Add("warn: " + message) + + member __.WriteError(message) = messages.Add("error: " + message) + +type ContextWithSnapshot () = + inherit DbContext() + +type GenericContext<'a> () = + inherit DbContext() + +[)>] +type ContextWithSnapshotModelSnapshot () = + inherit ModelSnapshot() + + override __.BuildModel (modelBuilder) = () + +module FSharpMigrationsScaffolderTest = + + let createMigrationScaffolder<'context when 'context :> DbContext and 'context : (new : unit -> 'context)> () = + let currentContext = CurrentDbContext(new 'context()) + let idGenerator = MigrationsIdGenerator() + + let sqlServerTypeMappingSource = + SqlServerTypeMappingSource( + TestServiceFactory.Instance.Create(), + TestServiceFactory.Instance.Create()) + + let sqlServerAnnotationCodeGenerator = + SqlServerAnnotationCodeGenerator( + AnnotationCodeGeneratorDependencies(sqlServerTypeMappingSource)) + + let code = FSharpHelper(sqlServerTypeMappingSource) + + let reporter = TestOperationReporter() + let migrationAssembly = + MigrationsAssembly( + currentContext, + DbContextOptions<'context>().WithExtension(FakeRelationalOptionsExtension()), + idGenerator, + FakeDiagnosticsLogger()) + let historyRepository = MockHistoryRepository() + + let services = RelationalTestHelpers.Instance.CreateContextServices() + let model = Model() + model.[RelationalAnnotationNames.RelationalModel] <- RelationalModel(model) + + FSharpMigrationsScaffolder( + MigrationsScaffolderDependencies( + currentContext, + model, + migrationAssembly, + MigrationsModelDiffer( + TestRelationalTypeMappingSource( + TestServiceFactory.Instance.Create(), + TestServiceFactory.Instance.Create()), + MigrationsAnnotationProvider( + MigrationsAnnotationProviderDependencies()), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService()), + idGenerator, + MigrationsCodeGeneratorSelector( + [| + CSharpMigrationsGenerator( + MigrationsCodeGeneratorDependencies( + sqlServerTypeMappingSource, + sqlServerAnnotationCodeGenerator), + CSharpMigrationsGeneratorDependencies( + code, + CSharpMigrationOperationGenerator( + CSharpMigrationOperationGeneratorDependencies( + code)), + CSharpSnapshotGenerator( + CSharpSnapshotGeneratorDependencies( + code, sqlServerTypeMappingSource, sqlServerAnnotationCodeGenerator)))) + |]), + historyRepository, + reporter, + MockProvider(), + SnapshotModelProcessor(reporter, services.GetRequiredService()), + Migrator( + migrationAssembly, + historyRepository, + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService>(), + services.GetRequiredService>(), + services.GetRequiredService()))) + + [] + let MigrationsScaffolderTests = + testList "" [ + + test "ScaffoldMigration reuses model snapshot" { + let scaffolder = createMigrationScaffolder() + + let migration = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") + + Expect.equal (nameof ContextWithSnapshotModelSnapshot) migration.SnapshotName "Should be equal" + Expect.equal typeof.Namespace migration.SnapshotSubnamespace "Should be equal" + } + + // test "ScaffoldMigration handles generic contexts" { + // let scaffolder = createMigrationScaffolder>() + + // let migration = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") + + // Expect.equal "GenericContextModelSnapshot" migration.SnapshotName "Should be equal" + // } + + test "ScaffoldMigration can override namespace" { + let scaffolder = createMigrationScaffolder() + + let migration = scaffolder.ScaffoldMigration("EmptyMigration", null, "OverrideNamespace.OverrideSubNamespace") + + Expect.stringContains migration.MigrationCode "namespace OverrideNamespace.OverrideSubNamespace" "Should contain namespace" + Expect.equal "OverrideNamespace.OverrideSubNamespace" migration.MigrationSubNamespace "Should be equal" + + Expect.stringContains migration.SnapshotCode "namespace OverrideNamespace.OverrideSubNamespace" "Should contain namespace" + Expect.equal "OverrideNamespace.OverrideSubNamespace" migration.SnapshotSubnamespace "Should be equal" + } + + test "ScaffoldMigration save works as expected" { + let outputDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) + + let scaffolder = createMigrationScaffolder() + let migration = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") + + let saveResult = scaffolder.Save(null, migration, outputDir) + + Expect.isTrue (File.Exists saveResult.MigrationFile) "MigrationFile should exist" + Expect.isTrue (File.Exists saveResult.MetadataFile) "MetadataFile should exist" + Expect.isTrue (File.Exists saveResult.SnapshotFile) "SnapshotFile should exist" + + Directory.Delete(outputDir, true) + } + + ] diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs index 09b7dc5..bb31398 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs @@ -1,7 +1,14 @@ module EntityFrameworkCore.FSharp.Test.Scaffolding.Internal.FSharpDbContextGeneratorTest +open System +open Microsoft.EntityFrameworkCore.Internal open Microsoft.EntityFrameworkCore.Scaffolding open Expecto +open Microsoft.EntityFrameworkCore +open Microsoft.EntityFrameworkCore.Metadata + +let normaliseLineEndings (str: string) = + str.Replace("\r\n", "\n").Replace("\r", "\n") let emptyModelDbContext = """namespace TestNamespace @@ -37,12 +44,17 @@ let FSharpDbContextGeneratorTest = testList "FSharpDbContextGeneratorTest" [ test "Empty Model" { - testBase.Test( - (fun m -> ()), - (ModelCodeGenerationOptions()), - (fun code -> Expect.equal code.ContextFile.Code emptyModelDbContext "Should be equal"), - (fun model -> Expect.isEmpty (model.GetEntityTypes()) "Should be empty") - ) + + let buildModel (m: ModelBuilder) = () + let options = ModelCodeGenerationOptions() + + let assertScaffold (code: ScaffoldedModel) = + Expect.equal (normaliseLineEndings code.ContextFile.Code) (normaliseLineEndings emptyModelDbContext) "Should be equal" + + let assertModel (model: IModel) = + Expect.isEmpty (model.GetEntityTypes()) "Should be empty" + + testBase.Test buildModel options assertScaffold assertModel } ] diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs index 1c803b1..2c515c5 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs @@ -1,5 +1,6 @@ -module EntityFrameworkCore.FSharp.Test.Scaffolding.Internal.FSharpModelGeneratorTests +module EntityFrameworkCore.FSharp.Test.Scaffolding.Internal.FSharpModelGeneratorTests +open System open System.IO open Microsoft.EntityFrameworkCore.Design open Microsoft.Extensions.DependencyInjection @@ -8,9 +9,13 @@ open Microsoft.EntityFrameworkCore.Metadata.Internal open EntityFrameworkCore.FSharp open EntityFrameworkCore.FSharp.Test.TestUtilities open Expecto -open Expecto.Tests -let createGenerator () = +let _eol = System.Environment.NewLine + +let join separator (lines: string seq) = System.String.Join(separator, lines) + +let createGenerator options = + let services = ServiceCollection() .AddEntityFrameworkSqlServer() @@ -19,19 +24,66 @@ let createGenerator () = .AddSingleton() .AddSingleton() - (EFCoreFSharpServices() :> IDesignTimeServices).ConfigureDesignTimeServices(services) + let designTimeServices = EFCoreFSharpServices.WithScaffoldOptions options + + designTimeServices.ConfigureDesignTimeServices(services) services .BuildServiceProvider() .GetRequiredService() +let getModelBuilder () = + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + + modelBuilder + .Entity("BlogPost") + .Property("Id") + .HasAnnotation(ScaffoldingAnnotationNames.ColumnOrdinal, 0) |> ignore + + modelBuilder + .Entity("BlogPost") + .Property("Title") + .HasAnnotation(ScaffoldingAnnotationNames.ColumnOrdinal, 1) |> ignore + + modelBuilder + .Entity("Comment") + .Property("Id") + .HasAnnotation(ScaffoldingAnnotationNames.ColumnOrdinal, 0) |> ignore + + modelBuilder + .Entity("Comment") + .Property("BlogPostId") + .HasAnnotation(ScaffoldingAnnotationNames.ColumnOrdinal, 1) |> ignore + + modelBuilder + .Entity("Comment") + .Property>("OptionalGuid") + .IsRequired(false) + .HasAnnotation(ScaffoldingAnnotationNames.ColumnOrdinal, 2) |> ignore + + modelBuilder + .Entity("BlogPost") + .HasMany("Comment", "Comments") + .WithOne("BlogPost") |> ignore + + modelBuilder + +let getModelBuilderOptions useDataAnnotations = + ModelCodeGenerationOptions( + ModelNamespace = "TestNamespace", + ContextNamespace = "ContextNameSpace", + ContextDir = Path.Combine("..", (sprintf "%s%c" "TestContextDir" Path.DirectorySeparatorChar)), + ContextName = "TestContext", + ConnectionString = "Data Source=Test", + UseDataAnnotations = useDataAnnotations) + [] let FSharpModelGeneratorTests = testList "FSharpModelGeneratorTests" [ test "Language Works" { - let generator = createGenerator() + let generator = createGenerator ScaffoldOptions.Default let result = generator.Language @@ -39,21 +91,9 @@ let FSharpModelGeneratorTests = } test "Write code works" { - let generator = createGenerator() - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() - - modelBuilder - .Entity("TestEntity") - .Property("Id") - .HasAnnotation(ScaffoldingAnnotationNames.ColumnOrdinal, 0) |> ignore - - let modelBuilderOptions = - ModelCodeGenerationOptions( - ModelNamespace = "TestNamespace", - ContextNamespace = "ContextNameSpace", - ContextDir = Path.Combine("..", (sprintf "%s%c" "TestContextDir" Path.DirectorySeparatorChar)), - ContextName = "TestContext", - ConnectionString = "Data Source=Test") + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let modelBuilder = getModelBuilder() + let modelBuilderOptions = getModelBuilderOptions false let result = generator.GenerateModel( @@ -69,5 +109,216 @@ let FSharpModelGeneratorTests = Expect.isNotEmpty result.AdditionalFiles.[0].Code "Should not be empty" } - ] + test "Record types created correctly" { + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) + let modelBuilder = getModelBuilder() + let modelBuilderOptions = getModelBuilderOptions false + + let result = + generator.GenerateModel( + modelBuilder.Model, + modelBuilderOptions) + + let expectedCode = + seq { + "namespace TestNamespace" + "" + "open System" + "open System.Collections.Generic" + "" + "module rec TestDomain =" + "" + " []" + " type BlogPost = {" + " mutable Id: int" + " mutable Title: string" + " mutable Comments: ICollection" + " }" + "" + " []" + " type Comment = {" + " mutable Id: int" + " mutable BlogPostId: int" + " mutable OptionalGuid: Guid option" + " mutable BlogPost: BlogPost" + " }" + } |> join _eol + + Expect.isNotEmpty result.AdditionalFiles.[0].Code "Should not be empty" + Expect.equal (result.AdditionalFiles.[0].Code.Trim()) expectedCode "Should be equal" + } + + test "Record types created correctly with annotations" { + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) + let modelBuilder = getModelBuilder() + let modelBuilderOptions = getModelBuilderOptions true + + let result = + generator.GenerateModel( + modelBuilder.Model, + modelBuilderOptions) + + let expectedCode = + seq { + "namespace TestNamespace" + "" + "open System.ComponentModel.DataAnnotations" + "open System.ComponentModel.DataAnnotations.Schema" + "open System" + "open System.Collections.Generic" + "" + "module rec TestDomain =" + "" + " []" + " type BlogPost = {" + " []" + " mutable Id: int" + " mutable Title: string" + " []" + " mutable Comments: ICollection" + " }" + "" + " []" + " type Comment = {" + " []" + " mutable Id: int" + " mutable BlogPostId: int" + " mutable OptionalGuid: Guid option" + " []" + " []" + " mutable BlogPost: BlogPost" + " }" + } |> join _eol + + Expect.isNotEmpty result.AdditionalFiles.[0].Code "Should not be empty" + Expect.equal (result.AdditionalFiles.[0].Code.Trim()) expectedCode "Should be equal" + } + + test "Class types created correctly" { + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let modelBuilder = getModelBuilder() + let modelBuilderOptions = getModelBuilderOptions false + + let result = + generator.GenerateModel( + modelBuilder.Model, + modelBuilderOptions) + + let expectedCode = + seq { + "namespace TestNamespace" + "" + "open System" + "open System.Collections.Generic" + "" + "module rec TestDomain =" + "" + " type BlogPost() as this =" + " do" + " this.Comments <- HashSet() :> ICollection" + "" + " [] val mutable private _Id : int" + "" + " member this.Id with get() = this._Id and set v = this._Id <- v" + "" + " [] val mutable private _Title : string" + "" + " member this.Title with get() = this._Title and set v = this._Title <- v" + "" + "" + " [] val mutable private _Comments : ICollection" + "" + " member this.Comments with get() = this._Comments and set v = this._Comments <- v" + "" + " type Comment() as this =" + " [] val mutable private _Id : int" + "" + " member this.Id with get() = this._Id and set v = this._Id <- v" + "" + " [] val mutable private _BlogPostId : int" + "" + " member this.BlogPostId with get() = this._BlogPostId and set v = this._BlogPostId <- v" + "" + " [] val mutable private _OptionalGuid : Guid option" + "" + " member this.OptionalGuid with get() = this._OptionalGuid and set v = this._OptionalGuid <- v" + "" + "" + " [] val mutable private _BlogPost : BlogPost" + "" + " member this.BlogPost with get() = this._BlogPost and set v = this._BlogPost <- v" + } |> join _eol + + Expect.isNotEmpty result.AdditionalFiles.[0].Code "Should not be empty" + Expect.equal (result.AdditionalFiles.[0].Code.Trim()) expectedCode "Should be equal" + } + + test "Class types created correctly with annotations" { + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let modelBuilder = getModelBuilder() + let modelBuilderOptions = getModelBuilderOptions true + + let result = + generator.GenerateModel( + modelBuilder.Model, + modelBuilderOptions) + + let expectedCode = + seq { + "namespace TestNamespace" + "" + "open System.ComponentModel.DataAnnotations" + "open System.ComponentModel.DataAnnotations.Schema" + "open System" + "open System.Collections.Generic" + "" + "module rec TestDomain =" + "" + " type BlogPost() as this =" + " do" + " this.Comments <- HashSet() :> ICollection" + "" + " [] val mutable private _Id : int" + "" + " []" + " member this.Id with get() = this._Id and set v = this._Id <- v" + "" + " [] val mutable private _Title : string" + "" + " member this.Title with get() = this._Title and set v = this._Title <- v" + "" + "" + " [] val mutable private _Comments : ICollection" + "" + " []" + " member this.Comments with get() = this._Comments and set v = this._Comments <- v" + "" + " type Comment() as this =" + " [] val mutable private _Id : int" + "" + " []" + " member this.Id with get() = this._Id and set v = this._Id <- v" + "" + " [] val mutable private _BlogPostId : int" + "" + " member this.BlogPostId with get() = this._BlogPostId and set v = this._BlogPostId <- v" + "" + " [] val mutable private _OptionalGuid : Guid option" + "" + " member this.OptionalGuid with get() = this._OptionalGuid and set v = this._OptionalGuid <- v" + "" + "" + " [] val mutable private _BlogPost : BlogPost" + "" + " []" + " []" + " member this.BlogPost with get() = this._BlogPost and set v = this._BlogPost <- v" + } |> join _eol + + Expect.isNotEmpty result.AdditionalFiles.[0].Code "Should not be empty" + Expect.equal (result.AdditionalFiles.[0].Code.Trim()) expectedCode "Should be equal" + + } + + ] diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs index 2a00ac2..4f6a53f 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs @@ -1,4 +1,4 @@ -module EntityFrameworkCore.FSharp.Test.Scaffolding.Internal.ModelCodeGeneratorTestBase +module EntityFrameworkCore.FSharp.Test.Scaffolding.Internal.ModelCodeGeneratorTestBase open System open Microsoft.EntityFrameworkCore @@ -65,6 +65,13 @@ type ModelCodeGeneratorTestBase() = "System.Globalization.dll" "System.IO.FileSystem.dll" "System.Runtime.InteropServices.dll" + "System.Runtime.Numerics.dll" + "System.Net.Requests.dll" + "System.Linq.Expressions.dll" + "System.Net.WebClient.dll" + "System.ObjectModel.dll" + "System.ComponentModel.dll" + "System.Data.Common.dll" ] let localNames = @@ -118,7 +125,7 @@ type ModelCodeGeneratorTestBase() = conventionSet - member this.Test((buildModel : ModelBuilder -> unit), (options : ModelCodeGenerationOptions), (assertScaffold : ScaffoldedModel -> unit), (assertModel : IModel -> unit)) = + member this.Test (buildModel : ModelBuilder -> unit) (options : ModelCodeGenerationOptions) (assertScaffold : ScaffoldedModel -> unit) (assertModel : IModel -> unit) = let modelBuilder = SqlServerTestHelpers.CreateConventionBuilder true modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore buildModel(modelBuilder) @@ -140,13 +147,14 @@ type ModelCodeGeneratorTestBase() = options.ContextName <- "TestDbContext" options.ConnectionString <- "Initial Catalog=TestDatabase" + options.SuppressConnectionStringWarning <- true let scaffoldedModel = generator.GenerateModel( model, options) - assertScaffold(scaffoldedModel); + assertScaffold scaffoldedModel let sources = scaffoldedModel.ContextFile.Code :: (scaffoldedModel.AdditionalFiles |> Seq.map (fun f -> f.Code) |> Seq.toList) @@ -163,5 +171,5 @@ type ModelCodeGeneratorTestBase() = let context = assembly.CreateInstance("TestNamespace.TestDbContext") :?> DbContext - assertModel(context.Model) + assertModel context.Model diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs index f648a0c..4053764 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs @@ -2,6 +2,7 @@ open System open System.IO +open System.Numerics open Microsoft.CodeAnalysis open Microsoft.Extensions.DependencyModel open Fantomas diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs new file mode 100644 index 0000000..0e409e4 --- /dev/null +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs @@ -0,0 +1,46 @@ +namespace EntityFrameworkCore.FSharp.Test.TestUtilities + +open Microsoft.EntityFrameworkCore.Metadata.Conventions +open Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal +open Microsoft.EntityFrameworkCore.Storage +open Microsoft.EntityFrameworkCore.Diagnostics +open System.Diagnostics +open Microsoft.EntityFrameworkCore +open Microsoft.Extensions.Logging +open Microsoft.EntityFrameworkCore.Internal +open Microsoft.EntityFrameworkCore.Metadata.Conventions.Infrastructure + +type FakeDiagnosticsLogger<'a when 'a :> LoggerCategory<'a> and 'a : (new : unit -> 'a)>() = + + interface ILogger with + member this.BeginScope<'state> (state : 'state) = null + member this.IsEnabled logLevel = true + member this.Log<'state> (logLevel, eventId, (state : 'state), ex, formatter) = + () + + + interface IDiagnosticsLogger<'a> with + member this.Definitions: LoggingDefinitions = + raise (System.NotImplementedException()) + + member this.DiagnosticSource: DiagnosticSource = + new DiagnosticListener("Fake") :> _ + + member this.Interceptors: IInterceptors = + raise (System.NotImplementedException()) + + member this.Logger: ILogger = + this :> _ + + member this.Options: ILoggingOptions = + LoggingOptions() :> _ + + member this.ShouldLogSensitiveData(): bool = + false + + member this.DbContextLogger = failwith "todo" + member this.DispatchEventData(definition, eventData, diagnosticSourceEnabled, simpleLogEnabled) = failwith "todo" + member this.NeedsEventData(definition, diagnosticSourceEnabled, simpleLogEnabled) = failwith "todo" + member this.NeedsEventData(definition, interceptor, diagnosticSourceEnabled, simpleLogEnabled) = failwith "todo" + member this.ShouldLog(definition) = failwith "todo" + diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs index b4d02f6..e04f744 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs @@ -6,6 +6,7 @@ open System.Data open System.Data.Common open System.Threading open System.Threading.Tasks +open Microsoft.EntityFrameworkCore.Metadata.Conventions.Infrastructure open Microsoft.EntityFrameworkCore.Update open System.Diagnostics open Microsoft.EntityFrameworkCore.Infrastructure @@ -56,7 +57,7 @@ type FakeDbParameterCollection() = parameters.Add value parameters.Count - 1 - + override this.GetEnumerator() = parameters.GetEnumerator() :> _ @@ -111,7 +112,7 @@ type FakeDbCommand(?connection: FakeDbConnection, ?commandExecutor : FakeCommand with get () = conn :> DbConnection and set value = conn <- value :?> FakeDbConnection - override this.DbTransaction + override this.DbTransaction with get () = tran :> DbTransaction and set value = tran <- value :?> FakeDbTransaction @@ -170,12 +171,12 @@ type FakeDbCommand(?connection: FakeDbConnection, ?commandExecutor : FakeCommand and set value = NotImplementedException() |> raise member this.DisposeCount = disposeCount - override this.Dispose disposing = + override this.Dispose disposing = if disposing then disposeCount <- disposeCount + 1 base.Dispose disposing - + and FakeDbDataReader (?columnNames:string[], ?results: ResizeArray) = inherit DbDataReader() @@ -233,7 +234,7 @@ and FakeDbDataReader (?columnNames:string[], ?results: ResizeArray) = override this.GetValue ordinal = _currentRow.[ordinal] override this.GetInt32 ordinal = _currentRow.[ordinal] :?> _ - + override this.Depth = NotImplementedException() |> raise override this.HasRows = NotImplementedException() |> raise @@ -283,7 +284,7 @@ and FakeDbDataReader (?columnNames:string[], ?results: ResizeArray) = override this.NextResult() = NotImplementedException() |> raise - + and FakeCommandExecutor @@ -371,23 +372,23 @@ and [] FakeDbTransaction(connection:FakeDbConnection, ?isolati rollbackCount <- rollbackCount + 1 override this.Dispose disposing = - if disposing then + if disposing then disposeCount <- disposeCount + 1 (this.DbConnection :?> FakeDbConnection).ActiveTransaction <- null; - + base.Dispose(disposing) and [] FakeDbConnection (connectionString: string, ?commandExecutor : FakeCommandExecutor, ?state : ConnectionState) as this = inherit DbConnection() let mutable connectionState : ConnectionState = match state with | Some s -> s | None -> ConnectionState.Closed - let commandExecutor = match commandExecutor with | Some ce -> ce | None -> FakeCommandExecutor() + let commandExecutor = match commandExecutor with | Some ce -> ce | None -> FakeCommandExecutor() let dbCommands = ResizeArray() let dbTransactions = ResizeArray() let mutable activeTransaction = new FakeDbTransaction(this) - + let mutable openCount = 0 let mutable openCountAsync = 0 let mutable closeCount = 0 @@ -472,19 +473,19 @@ and FakeRelationalDatabaseCreator () = member this.CanConnectAsync cancellationToken = NotImplementedException() |> raise interface IRelationalDatabaseCreator with - member this.CanConnect(): bool = + member this.CanConnect(): bool = raise (System.NotImplementedException()) - member this.CanConnectAsync(cancellationToken: CancellationToken): Task = + member this.CanConnectAsync(cancellationToken: CancellationToken): Task = raise (System.NotImplementedException()) - member this.HasTables(): bool = + member this.HasTables(): bool = raise (System.NotImplementedException()) - member this.HasTablesAsync(cancellationToken: CancellationToken): Task = + member this.HasTablesAsync(cancellationToken: CancellationToken): Task = raise (System.NotImplementedException()) - + member this.EnsureDeleted() = NotImplementedException() |> raise member this.EnsureDeletedAsync cancellationToken = NotImplementedException() |> raise member this.EnsureCreated() = NotImplementedException() |> raise - member this.EnsureCreatedAsync cancellationToken = NotImplementedException() |> raise + member this.EnsureCreatedAsync cancellationToken = NotImplementedException() |> raise member this.Exists() = NotImplementedException() |> raise member this.ExistsAsync cancellationToken = NotImplementedException() |> raise member this.Create() = NotImplementedException() |> raise @@ -502,32 +503,32 @@ and [] FakeRelationalOptionsExtension = new (copyOptions: FakeRelationalOptionsExtension) = { inherit RelationalOptionsExtension(copyOptions) } static member AddEntityFrameworkRelationalDatabase serviceCollection = - + let serviceMap (map : ServiceCollectionMap) = map.TryAdd(typeof, typeof, ServiceLifetime.Singleton) |> ignore - let builder = EntityFrameworkRelationalServicesBuilder(serviceCollection) + .TryAdd() .TryAdd>() .TryAdd() .TryAdd() - .TryAdd() + .TryAdd() + .TryAdd() .TryAdd() .TryAdd(fun _ -> null) .TryAdd() .TryAdd() .TryAdd() - .TryAdd() - .TryAddProviderSpecificServices(Action(serviceMap)) + //.TryAddProviderSpecificServices(Action(serviceMap)) builder.TryAddCoreServices() |> ignore serviceCollection - override this.Info - with get() = + override this.Info + with get() = System.NotImplementedException() |> raise diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalConventionSetBuilder.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalConventionSetBuilder.fs index 03a8174..64feb52 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalConventionSetBuilder.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalConventionSetBuilder.fs @@ -1,40 +1,7 @@ -namespace EntityFrameworkCore.FSharp.Test.TestUtilities +namespace EntityFrameworkCore.FSharp.Test.TestUtilities -open Microsoft.EntityFrameworkCore.Metadata.Conventions -open Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal -open Microsoft.EntityFrameworkCore.Storage -open Microsoft.EntityFrameworkCore.Diagnostics -open System.Diagnostics -open Microsoft.EntityFrameworkCore -open Microsoft.Extensions.Logging -open Microsoft.EntityFrameworkCore.Internal open Microsoft.EntityFrameworkCore.Metadata.Conventions.Infrastructure -type FakeDiagnosticsLogger<'a when 'a :> LoggerCategory<'a> and 'a : (new : unit -> 'a)>() = - - interface ILogger with - member this.BeginScope<'state> (state : 'state) = null - member this.IsEnabled logLevel = true - member this.Log<'state> (logLevel, eventId, (state : 'state), ex, formatter) = - () - - - interface IDiagnosticsLogger<'a> with - member this.Definitions: LoggingDefinitions = - raise (System.NotImplementedException()) - - member this.DiagnosticSource: DiagnosticSource = - new DiagnosticListener("Fake") :> _ - - member this.Interceptors: IInterceptors = - raise (System.NotImplementedException()) - - member this.Logger: ILogger = - this :> _ - - member this.Options: ILoggingOptions = - LoggingOptions() :> _ - - member this.ShouldLogSensitiveData(): bool = - false +type TestRelationalConventionSetBuilder(dependencies, relationalDependencies) = + inherit RelationalConventionSetBuilder(dependencies, relationalDependencies) diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs index 449ccf9..1703c18 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs @@ -34,9 +34,9 @@ module TestServiceFactory = ] let private tryGetEnumerableType (t : Type) = - + let typeInfo = System.Reflection.IntrospectionExtensions.GetTypeInfo t - + if not (typeInfo.IsGenericTypeDefinition) && typeInfo.IsGenericType && t.GetGenericTypeDefinition() = typeof> then @@ -59,7 +59,7 @@ module TestServiceFactory = match serviceTypeOpt with | None -> if implementationTypes |> Seq.length = 1 then - let msg = sprintf "Cannot use 'TestServiceFactory' for '%s': no single implementation type in same assembly." (serviceType.DisplayName()) + let msg = sprintf "Cannot use 'TestServiceFactory' for '%s': no single implementation type in same assembly." (serviceType.Name) invalidOp msg [ { Type = serviceType; ImplementationType = implementationTypes |> Seq.head }] @@ -68,8 +68,8 @@ module TestServiceFactory = |> Seq.map(fun t -> { Type = s; ImplementationType = t }) |> Seq.toList else - [ { Type = serviceType; ImplementationType = serviceType } ] - + [ { Type = serviceType; ImplementationType = serviceType } ] + let rec private addType (serviceCollection :ServiceCollection) (serviceType: Type) (specialCases : Implementation list) = let implementation = specialCases @@ -104,7 +104,7 @@ module TestServiceFactory = match constructor with | None -> - let msg = sprintf "Cannot use 'TestServiceFactory' for '%s': no public constructor." (t.ImplementationType.DisplayName()) + let msg = sprintf "Cannot use 'TestServiceFactory' for '%s': no public constructor." (t.ImplementationType.Name) invalidOp msg | Some c -> c.GetParameters() @@ -126,4 +126,3 @@ module TestServiceFactory = - \ No newline at end of file diff --git a/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs b/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs new file mode 100644 index 0000000..e3bee35 --- /dev/null +++ b/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs @@ -0,0 +1,47 @@ +module EntityFrameworkCore.FSharp.Test.ValueConverters.ValueConvertersTest + +open System +open EntityFrameworkCore.FSharp +open Expecto + +[] +let ValueConvertersTest = + testList "ValueConvertersTest" [ + test "string -> string option" { + let c = Conversion.toOption + Expect.equal (c.Compile().Invoke(null)) None "Should be equal" + + let g = "test" + Expect.equal (c.Compile().Invoke(g)) (Some g) "Should be equal" + } + + test "string option -> string" { + let c = Conversion.fromOption + Expect.equal (c.Compile().Invoke(None)) null "Should be equal" + + let g = "test" + Expect.equal (c.Compile().Invoke(Some g)) g "Should be equal" + } + + test "Guid? -> Guid option" { + let c = Conversion.toOption> + Expect.equal (c.Compile().Invoke(Nullable())) None "Should be equal" + + let g = Nullable(Guid.NewGuid()) + Expect.equal (c.Compile().Invoke(g)) (Some g) "Should be equal" + } + + test "Guid option -> Guid?" { + let c = Conversion.fromOption> + Expect.equal (c.Compile().Invoke(None)) (Nullable()) "Should be equal" + + let g = Nullable(Guid.NewGuid()) + Expect.equal (c.Compile().Invoke(Some g)) g "Should be equal" + } + + test "Can create OptionConverter" { + let oc = OptionConverter() + + Expect.isNotNull (box oc) "Should not be null" + } + ] diff --git a/tests/EFCore.FSharp.Tests/paket.references b/tests/EFCore.FSharp.Tests/paket.references index d6be2e6..8231167 100644 --- a/tests/EFCore.FSharp.Tests/paket.references +++ b/tests/EFCore.FSharp.Tests/paket.references @@ -4,9 +4,13 @@ Microsoft.NET.Test.Sdk YoloDev.Expecto.TestSdk altcover + +System.Runtime.Numerics +Microsoft.EntityFrameworkCore.Relational Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Specification.Tests +NetTopologySuite.IO.SqlServerBytes FSharp.Compiler.Service Microsoft.CodeAnalysis