diff --git a/.JuliaFormatter.toml b/.JuliaFormatter.toml new file mode 100644 index 00000000..df92e1b7 --- /dev/null +++ b/.JuliaFormatter.toml @@ -0,0 +1,7 @@ +# Configuration file for JuliaFormatter.jl, see: https://domluna.github.io/JuliaFormatter.jl/stable/config/ + +always_for_in = true +always_use_return = true +margin = 80 +remove_extra_newlines = true +short_to_long_function_def = true diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..67d0de4e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,18 @@ +--- +name: Bug report +about: Help us locate bugs in EAGO + +--- + +Thanks for your interest in EAGO! + +Please read the following before posting a new bug report: + +If you're submitting a bug report, be sure to include as much relevant information +as possible. In general, you should try include a minimal reproducible example, +the output of `versioninfo()`, and the output of `using Pkg; Pkg,status()`. For +bugs that result in error messages, please include a screenshot of the full +console output. See https://help.github.com/articles/basic-writing-and-formatting-syntax/ +for background information on formatting text and code on GitHub issues. + +Thanks for your contribution to EAGO! diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..e0859c0d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,18 @@ +--- +name: Feature request +about: Suggest how we can improve EAGO + +--- + +Thanks for your interest in EAGO! You can use this Github issue to suggest new +features or make recommendations on additional documentation for EAGO. + +**If your feature request is related to a problem, please describe the problem.** +Ex. I can't find a way to [...] + +**Describe the solution you'd like** +Provide a clear brief description of the feature you'd like. + +**Provide any other context you think we'd find helpful** + +Thanks for your contribution to EAGO! diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml new file mode 100644 index 00000000..083baf95 --- /dev/null +++ b/.github/workflows/TagBot.yml @@ -0,0 +1,15 @@ +name: TagBot +on: + issue_comment: + types: + - created + workflow_dispatch: +jobs: + TagBot: + if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' + runs-on: ubuntu-latest + steps: + - uses: JuliaRegistries/TagBot@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + ssh: ${{ secrets.DOCUMENTER_KEY }} diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 00000000..292275f5 --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,23 @@ +name: Documentation +on: + push: + branches: [master] + tags: '*' + pull_request: + types: [opened, synchronize, reopened] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: julia-actions/setup-julia@latest + with: + # Build documentation on Julia 1.3 + version: '1.5' + - name: Install dependencies + run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()' + - name: Build and deploy + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For authentication with GitHub Actions token + DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # For authentication with SSH deploy key + run: julia --project=docs/ docs/make.jl diff --git a/.gitignore b/.gitignore index 913eeffc..82211e26 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.jl.cov *.jl.*.cov *.jl.mem +*.cov docs/build/ diff --git a/News.md b/News.md index ae139dd9..ff85ec26 100644 --- a/News.md +++ b/News.md @@ -30,3 +30,35 @@ - Parametric interval methods and the Implicit optimizer have been move to a separate package (to be tagged shortly.) - JIT compilation time has been reduced substantially. - Support for silent tag and time limits. + +## v0.4.0 + - 6/7/2020: [**EAGO v0.4.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.0). + - Support for new MOI/JuMP `RawParameter` input and a number of new attributes. + - Separates McCormick and ReverseMcCormick libraries (now [McCormick.jl](https://github.com/PSORLab/McCormick.jl) and [ReverseMcCormick.jl](https://github.com/PSORLab/ReverseMcCormick.jl)) + from main package. McCormick.jl is reexported. + - Relaxation calculations now return NaN values on a domain violation. + - Tolerance based validation of cuts has been added to generate numerically safe cuts. + - Significantly simplify internal codebase for `EAGO.Optimizer` (no changes to API): fully decouples input problem specifications from the formulation used internally, stack only stores variables that are branched on, and a number of internal rearrangements to clearly delineate different routines. + - Add problem classification preprocessing that throws to simpler routines if LP problem types are detected (enables future support for SOCP, MILP, MISOCP, and Convex forms). + - Fix multiple bugs and add more transparent error codes. + - 06/17/2020: [**EAGO v0.4.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/commit/9c1bcf024a19840a0ac49c8c6da13619a5f3845f#comments) Contains minor bug releases. + - 08/29/2020: [**EAGO v0.4.2 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.2) Support for Julia v1.5. + +## v0.5.0 +- 11/18/2020: [**EAGO v0.5.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.0) + - Introduces the `register_eago_operators!(m::JuMP.Model)` which can be used + to register all nonstandard nonlinear terms used in EAGO in any JuMP model. + - Introduces `positive`, `negative`, `lower_bnd`, `upper_bnd`, and `bnd` + functions which can be used to enforce bounds on intermediate terms in + nonlinear expressions (EAGO.Optimizer only). + - Adds envelopes: `abs2`, `sinpi`, `cospi`, `fma`, `cbrt`. + - Adds envelopes and functions: `xlogx` + - Adds envelopes of special functions: `erf`, `erfc`, `erfinv`, `erfcinv` + - Adds envelopes of activation functions: `relu`, `gelu`, `elu`, `selu`, `swish1`,`sigmoid`, `softsign`, `softplus`,`bisigmoid`, `pentanh`, `leaky_relu`, `param_relu`. + - Error messages in `sip_explicit` have been made more transparent. + - Fixes some issues with documentation image rendering and links. + - Drops appveyor CI and Travis CI in favor of Github Actions. +- 11/18/2020 [**EAGO v0.5.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.1) + - Support for Julia ~1 (with limited functionality for Julia 1.0, 1.1). +- 11/18/2020 **EAGO v0.5.2 has been tagged** + - Fix user specified branching variables. diff --git a/Project.toml b/Project.toml index 457b4d80..40aeb095 100644 --- a/Project.toml +++ b/Project.toml @@ -2,7 +2,7 @@ name = "EAGO" uuid = "bb8be931-2a91-5aca-9f87-79e1cb69959a" authors = ["Matthew Wilhelm "] -version = "0.5.2" +version = "0.6.0" [deps] Cassette = "7057c7e9-c182-5462-911a-8362d720325c" @@ -27,18 +27,18 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" [compat] Cassette = "0.3.1" -DataStructures = "~0.17" +DataStructures = "~0.17, ~0.18" DocStringExtensions = "~0.8" -FastRounding = "0.2" +FastRounding = "~0.2, ~0.3" ForwardDiff = "~0.5.0, ~0.6, ~0.7, ~0.8, ~0.9, ~0.10" -GLPK = "~0.9, ~0.10, ~0.11, ~0.12" +GLPK = "~0.9, ~0.10, ~0.11, ~0.12, ~0.13" IntervalArithmetic = "~0.14, ~0.15, ~0.16, ~0.17" IntervalContractors = "~0.3, ~0.4" -Ipopt = "0.6.0, 0.6.1" -JuMP = "0.21.2" -MathOptInterface = "0.9.13" -McCormick = "~0.10" -NaNMath = "0.3" +Ipopt = "~0.6" +JuMP = "0.21.2, 0.21.3, 0.21.4, 0.21.5, 0.21.6" +MathOptInterface = "0.9.13, 0.9.14, 0.9.15, 0.9.16, 0.9.17, 0.9.18, 0.9.19" +McCormick = "0.10.3" +NaNMath = "~0.3" NumericIO = "= 0.3.1" ReverseMcCormick = "~0.8, ~0.9" Reexport = "~0.2" diff --git a/README.md b/README.md index 8b1d5902..3549e53d 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ EAGO is an open-source development environment for **robust and global optimizat | **Documentation** | **Linux/OS/Windows** | **Persistent DOI** | |:-----------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:| -| [![](https://img.shields.io/badge/docs-latest-blue.svg)](https://PSORLab.github.io/EAGO.jl/dev) | [![Build Status](https://github.com/PSORLab/EAGO.jl/workflows/CI/badge.svg?branch=master)](https://github.com/PSORLab/EAGO.jl/actions?query=workflow%3ACI) | [![DOI](https://zenodo.org/badge/108954118.svg)](https://zenodo.org/badge/latestdoi/108954118) | +| [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://PSORLab.github.io/EAGO.jl/stable) [![](https://img.shields.io/badge/docs-latest-blue.svg)](https://PSORLab.github.io/EAGO.jl/dev) | [![Build Status](https://github.com/PSORLab/EAGO.jl/workflows/CI/badge.svg?branch=master)](https://github.com/PSORLab/EAGO.jl/actions?query=workflow%3ACI) | [![DOI](https://zenodo.org/badge/108954118.svg)](https://zenodo.org/badge/latestdoi/108954118) | | **Coverage** | **Chat** | |:------------:|:------------:| @@ -99,36 +99,17 @@ As a global optimization platform, EAGO's solvers can be used to find solutions The EAGO package has numerous features: a solver accessible from JuMP/MathOptInterface, domain reduction routines, McCormick relaxations, and specialized non-convex semi-infinite program solvers. A full description of all EAGO features is available in the [**documentation website**](https://psorlab.github.io/EAGO.jl/dev/). A series of example have been provided in the form of Jupyter notebooks in the separate [**EAGO-notebooks**](https://github.com/PSORLab/EAGO-notebooks) repository ## Recent News - -- 6/7/2020: [**EAGO v0.4.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.0). - - Support for new MOI/JuMP `RawParameter` input and a number of new attributes. - - Separates McCormick and ReverseMcCormick libraries (now [McCormick.jl](https://github.com/PSORLab/McCormick.jl) and [ReverseMcCormick.jl](https://github.com/PSORLab/ReverseMcCormick.jl)) - from main package. McCormick.jl is reexported. - - Relaxation calculations now return NaN values on a domain violation. - - Tolerance based validation of cuts has been added to generate numerically safe cuts. - - Significantly simplify internal codebase for `EAGO.Optimizer` (no changes to API): fully decouples input problem specifications from the formulation used internally, stack only stores variables that are branched on, and a number of internal rearrangements to clearly delineate different routines. - - Add problem classification preprocessing that throws to simpler routines if LP problem types are detected (enables future support for SOCP, MILP, MISOCP, and Convex forms). - - Fix multiple bugs and add more transparent error codes. - -- 06/17/2020: [**EAGO v0.4.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/commit/9c1bcf024a19840a0ac49c8c6da13619a5f3845f#comments) Contains minor bug releases. -- 08/29/2020: [**EAGO v0.4.2 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.2) Support for Julia v1.5. -- 11/18/2020: [**EAGO v0.5.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.0) - - Introduces the `register_eago_operators!(m::JuMP.Model)` which can be used - to register all nonstandard nonlinear terms used in EAGO in any JuMP model. - - Introduces `positive`, `negative`, `lower_bnd`, `upper_bnd`, and `bnd` - functions which can be used to enforce bounds on intermediate terms in - nonlinear expressions (EAGO.Optimizer only). - - Adds envelopes: `abs2`, `sinpi`, `cospi`, `fma`, `cbrt`. - - Adds envelopes and functions: `xlogx` - - Adds envelopes of special functions: `erf`, `erfc`, `erfinv`, `erfcinv` - - Adds envelopes of activation functions: `relu`, `gelu`, `elu`, `selu`, `swish1`, - `sigmoid`, `softsign`, `softplus`, - `bisigmoid`, `pentanh`, `leaky_relu`, - `param_relu`. - - Error messages in `sip_explicit` have been made more transparent. - - Fixes some issues with documentation image rendering and links. - - Drops appveyor CI and Travis CI in favor of Github Actions. -- 11/18/2020 [**EAGO v0.5.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.1) Support for Julia ~1 (with limited functionality for Julia 1.0, 1.1). +- 2/5/2021: [EAGO v0.6.0 has been tagged](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.6.0). + - License changed from CC BY-NC-SA 4.0 to MIT + - Fix deprecated Ipopt constructor + - Fix discrepancy between the returned objective value and the objective evaluated at the solution. + - Dramatically decrease allocates and first-run performance of SIP routines. + - Add two algorithms which modify SIPres detailed in Djelassi, H. and Mitsos A. 2017. + - Fix objective interval fallback function. + - New SIP interface with extendable subroutines. + - Fix x^y relaxation bug. + - Add issues template. + - Add SIP subroutine documentation. For a full list of EAGO release news, see click [**here**](https://github.com/PSORLab/EAGO.jl/releases) @@ -149,7 +130,7 @@ generation of Wergert Tapes pass evaluators between JuMP and EAGO etc. pkg> add JuMP ``` -EAGO v0.5.1 is the current tagged version and requires Julia 1.2+ for full functionality (however Julia 1.0+ versions support partial functionality). Use with version 1.5 is recommended as the majority of in-house testing has occurred using this version of Julia. The user is directed to the [**High-Performance Configuration**](https://psorlab.github.io/EAGO.jl/Optimizer/high_performance/) +EAGO v0.6.0 is the current tagged version and requires Julia 1.2+ for full functionality (however Julia 1.0+ versions support partial functionality). Use with version 1.5 is recommended as the majority of in-house testing has occurred using this version of Julia. The user is directed to the [**High-Performance Configuration**](https://psorlab.github.io/EAGO.jl/Optimizer/high_performance/) for instructions on how to install a high performance version of EAGO (rather than the basic entirely open-source version). If any issues are encountered when loading EAGO (or when using it), please submit an issue using the Github [**issue tracker**](https://github.com/PSORLab/EAGO.jl/issues). diff --git a/docs/Project.toml b/docs/Project.toml index 2360a935..94719722 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,5 +1,6 @@ [deps] Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +DocumenterTools = "35a29f4d-8980-5a13-9543-d66fff28ecb8" EAGO = "bb8be931-2a91-5aca-9f87-79e1cb69959a" IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" JuMP = "4076af6c-e467-56ae-b986-b466b2749572" @@ -8,4 +9,4 @@ McCormick = "53c679d3-6890-5091-8386-c291e8c8aaa1" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [compat] -Documenter = "0.24" +Documenter = "^0.26" diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 00000000..c7418817 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-slate \ No newline at end of file diff --git a/docs/build/Dev/contributing/index.html b/docs/build/Dev/contributing/index.html deleted file mode 100644 index bd9add06..00000000 --- a/docs/build/Dev/contributing/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -How to Contribute · EAGO.jl: Easy Advanced Global Optimization

How to Contribute

We're always happy to welcome work with additional collaborators and contributors. One of the easy ways for newcomers to contribute is by adding additional relaxations.

If you're interested in contributing in larger ways, please contact: Matthew Wilhelm

If you have any requests for additional functionality, bug fixes, or comments please feel free to open a new issue using Github issue tracker.

diff --git a/docs/build/Dev/future/index.html b/docs/build/Dev/future/index.html deleted file mode 100644 index 661ad86d..00000000 --- a/docs/build/Dev/future/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Future Work · EAGO.jl: Easy Advanced Global Optimization

Future Work

Current Activity:

  • Update CI testing.
  • Specialized algorithms for relaxing ODE constrained problems and solving global and robust optimization problems.
  • Extensions for nonconvex dynamic global & robust optimization.
  • Provide support for mixed-integer problems.
  • Update EAGO to support nonsmooth problems (requires: a nonsmooth local nlp optimizer or lexiographic AD, support for relaxations is already included).
  • Performance assessment of nonlinear (differentiable) relaxations and incorporation into main EAGO routine.
  • Evaluation and incorporation of implicit relaxation routines in basic solver.

Other things on the wishlist (but not actively being worked on):

  • Implement the interval constraint propagation scheme presented in Vu 2008. For improved convergences.
  • A parametric bisection routine will be updated that can divide the (X,P) space into a series of boxes that all contain unique branches of the implicit function p->y(p).
  • Provide a better interface the nonconvex semi-infinite programs solvers (JuMPeR extension?).
  • Add additional McCormick relaxations.
  • Add handling for domain reduction of special expression forms.
diff --git a/docs/build/McCormick/Figure_1.png b/docs/build/McCormick/Figure_1.png deleted file mode 100644 index b27217f2..00000000 Binary files a/docs/build/McCormick/Figure_1.png and /dev/null differ diff --git a/docs/build/McCormick/Figure_2.png b/docs/build/McCormick/Figure_2.png deleted file mode 100644 index 5b56c3be..00000000 Binary files a/docs/build/McCormick/Figure_2.png and /dev/null differ diff --git a/docs/build/McCormick/Figure_3.png b/docs/build/McCormick/Figure_3.png deleted file mode 100644 index ff43796e..00000000 Binary files a/docs/build/McCormick/Figure_3.png and /dev/null differ diff --git a/docs/build/McCormick/implicit/index.html b/docs/build/McCormick/implicit/index.html deleted file mode 100644 index 587dceb5..00000000 --- a/docs/build/McCormick/implicit/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Relaxation of Implicit Functions · EAGO.jl: Easy Advanced Global Optimization

Relaxation of Implicit Functions

High-level functions

Subroutines

EAGO.McCormick.final_cutFunction

final_cut

An operator that cuts the x_mc object using the x_mc_int bounds in a differentiable or nonsmooth fashion to achieve a composite relaxation within x_mc_int.

diff --git a/docs/build/McCormick/operators/index.html b/docs/build/McCormick/operators/index.html deleted file mode 100644 index 4b5c302f..00000000 --- a/docs/build/McCormick/operators/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Currently supported operators · EAGO.jl: Easy Advanced Global Optimization

Currently supported operators

The operators currently supported are listed below. The operators with a check box have been subject to a large degree of scrutiny and have been implemented for both forward and reverse McCormick relaxations.

Univariate McCormick Operators

Arbitrarily differentiable relaxations can be constructed for the following operators:

  • [x] Inverse (inv)
  • [x] Logarithms (log, log2, log10)
  • [x] Exponential Functions (exp, exp2, exp10)
  • [x] Square Root (sqrt)
  • [x] Absolute Value (abs)

Both nonsmooth and Whitney-1 (once differentiable) relaxations are supported:

  • [x] Step Functions (step, sign)
  • [x] Trignometric Functions (sin, cos, tan)
  • [x] Inverse Trignometric Functions (asin, acos, atan)
  • [x] Hyperbolic Functions (sinh, cosh, tanh)
  • [x] Inverse Hyperbolic Functions (asinh, acosh, atanh)

Bivariate Operators: McCormick & McCormick

The following bivariant operators are supported for two MC objects. Both nonsmooth and Whitney-1 (once differentiable) relaxations are supported.

  • [x] multiplication (*)
  • [x] division (/)

Arbitrarily differentiable relaxations can be constructed for the following operators:

  • [x] addition (+)
  • [x] subtraction (-)
  • [x] minimization (min)
  • [x] maximization (max)

Bivariate Operators: McCormick & (Integer or Float)

Arbitrarily differentiable relaxations can be constructed for the following operators:

  • [x] addition (+)
  • [x] subtraction (-)
  • [x] multiplication (*)
  • [x] division (/)
  • [x] minimization (min)
  • [x] maximization (max)
  • [x] Exponentiation (pow, ^)
diff --git a/docs/build/McCormick/overview/index.html b/docs/build/McCormick/overview/index.html deleted file mode 100644 index 30d53bc2..00000000 --- a/docs/build/McCormick/overview/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Overview · EAGO.jl: Easy Advanced Global Optimization

Overview

EAGO provides a library of McCormick relaxations in native Julia code. It supports relaxing functions using both nonsmooth McCormick relaxations (Mitsos2009), smooth McCormick relaxations (Khan2017), multi-variant McCormick relaxations (Tsoukalas2014), as well as subgradient-based interval refinement (Najman2017). For functions with arbitrarily differentiable relaxations, the differentiable can be modified by adjusting a constant value. Additionally, and nonvalidated validated interval bounds are supported via ValidatedNumerics.jl.

diff --git a/docs/build/McCormick/type/index.html b/docs/build/McCormick/type/index.html deleted file mode 100644 index bac390d7..00000000 --- a/docs/build/McCormick/type/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Types · EAGO.jl: Easy Advanced Global Optimization

Types

EAGO.McCormick.MCType
MC

MC{N, T <: RelaxTag} <: Real is the McCormick (w/ (sub)gradient) structure which is used to overload standard calculations. The fields are:

  • cc::Float64: Concave relaxation
  • cv::Float64: Convex relaxation
  • cc_grad::SVector{N,Float64}: (Sub)gradient of concave relaxation
  • cv_grad::SVector{N,Float64}: (Sub)gradient of convex relaxation
  • Intv::Interval{Float64}: Interval bounds
  • cnst::Bool: Flag for whether the bounds are constant
EAGO.McCormick.RelaxTagType
RelaxTag

An abstract type the subtypes of which define the manner of relaxation that will be performed for each operator applied to the MC object. Currently, the struct NS which specifies that standard (Mitsos 2009) are to be used is fully supported. Limited support is provided for differentiable McCormick relaxations specified by struct Diff (Khan 2017) and struct MV struct MV (Tsoukalas 2011.)

Constructors for MC

EAGO.McCormick.MCMethod
MC{N,T}(y::Interval{Float64})

Constructs McCormick relaxation with convex relaxation equal to y.lo and concave relaxation equal to y.hi.

MC{N,T}(y::Float64)

Constructs McCormick relaxation with convex relaxation equal to y and concave relaxation equal to y.

MC{N,T}(cv::Float64, cc::Float64)

Constructs McCormick relaxation with convex relaxation equal to cv and concave relaxation equal to cc.

MC{N,T}(val::Float64, Intv::Interval{Float64}, i::Int64)

Constructs McCormick relaxation with convex relaxation equal to val, concave relaxation equal to val, interval bounds of Intv, and a unit subgradient with nonzero's ith dimension of length N.

diff --git a/docs/build/McCormick/usage/index.html b/docs/build/McCormick/usage/index.html deleted file mode 100644 index e2f1cc9a..00000000 --- a/docs/build/McCormick/usage/index.html +++ /dev/null @@ -1,36 +0,0 @@ - -Basic Usage · EAGO.jl: Easy Advanced Global Optimization

Basic Usage

Bounding a function via smooth McCormick objects

In order to bound a function using a McCormick relaxation. You first construct structure that bounds the input variables then you construct pass these variables two a function.

In the example below, convex/concave relaxations of the function f(x)=sin(2x)+exp(x)-x are calculated at x = 1 on the interval [-2,3].

using EAGO, IntervalArithmetic
-
-# create MC object for x = 2.0 on [1.0,3.0] for relaxing
-# a function f(x) on the interval Intv
-
-f(x) = x*(x-5.0)*sin(x)
-
-x = 2.0                          # value of independent variable x
-Intv = Interval(1.0,4.0)         # define interval to relax over
-
-# create McCormick object
-xMC = MC{1,NS}(x,Intv,1)
-
-fMC = f(xMC)             # relax the function
-
-cv = fMC.cv              # convex relaxation
-cc = fMC.cc              # concave relaxation
-cvgrad = fMC.cv_grad     # subgradient/gradient of convex relaxation
-ccgrad = fMC.cc_grad     # subgradient/gradient of concave relaxation
-Iv = fMC.Intv           # retrieve interval bounds of f(x) on Intv

The plotting the results we can easily generate visual the convex and concave relaxations, interval bounds, and affine bounds constructed using the subgradient at the middle of X.

Figure_1

If we instead use the constructor xMC = MC{1,Diff}(x,Intv,1) in the above code, and then re-plot we arrive at the below graph

set_diff_relax!(1)

Figure_2

This can readily be extended to multivariate functions as shown below


-f(x) = max(x[1],x[2])
-
-x = [2.0 1.0]                                    # values of independent variable x
-Intv = [Interval(-4.0,5.0), Interval(-5.0,3.0)]  # define intervals to relax over
-
-# create McCormick object
-xMC = [MC{2,Diff}(x[i], Intv[i], i) for i=1:2)]
-
-fMC = f(xMC)            # relax the function
-
-cv = fMC.cv              # convex relaxation
-cc = fMC.cc              # concave relaxation
-cvgrad = fMC.cv_grad     # subgradient/gradient of convex relaxation
-ccgrad = fMC.cc_grad     # subgradient/gradient of concave relaxation
-Iv = fMC.Intv            # retrieve interval bounds of f(x) on Intv

Figure_3

diff --git a/docs/build/Optimizer/bnb_back/index.html b/docs/build/Optimizer/bnb_back/index.html deleted file mode 100644 index d6ee4428..00000000 --- a/docs/build/Optimizer/bnb_back/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -EAGO's Branch and Bound Routine · EAGO.jl: Easy Advanced Global Optimization

EAGO's Branch and Bound Routine

This component is meant to provide a flexible framework for implementing spatial branch-and-bound based optimization routines in Julia. All components of the branch-and-bound routine can be customized by the individual user: lower bounding problem, upper bounding problem.

Branch and Bound Node Storage

EAGO.NodeBBType
NodeBB

Stores information associated with each node in Branch & Bound tree.

  • lower_variable_bounds::Vector{Float64}: Lower bounds of variable box.
  • upper_variable_bounds::Vector{Float64}: Upper bounds of variable box.
  • lower_bound::Float64: Lower bound of problem solution on nodeBB
  • upper_bound::Float64: Upper bound of problem solution on nodeBB
  • depth::Int64: Depth of node in B&B tree.
  • id::Int64: Unique id for each node.

Customizable subroutines

EAGO.add_cut!Method
add_cut!(t::ExtensionType, x::Optimizer)

Adds a cut for each constraint and the objective function to the subproblem.

EAGO.branch_node!Method
branch_node!(t::ExtensionType, x::Optimizer)

Creates two nodes from currentnode using information available the x and stores them to the stack. By default, relative width bisection is perfomed at a point `branchpntwhich is a convex combination (parameter: branch_cvx_factor) of the solution to the relaxation and the midpoint of the node. If this solution lies withinbranchoffset/widthof a bound then the branch point is moved to a distance ofbranchoffset/width` from the bound.

EAGO.convergence_checkMethod
convergence_check(t::ExtensionType, x::Optimizer)

Checks for convergence of algorithm with respect to absolute and/or relative tolerances.

EAGO.cut_conditionMethod
cut_condition(t::ExtensionType, x::Optimizer)

Checks if a cut should be added and computes a new reference point to add the cut at. If no cut should be added the constraints not modified in place are deleted from the relaxed optimizer and the solution is compared with the interval lower bound. The best lower bound is then used.

EAGO.fathom!Method
fathom!(t::ExtensionType, d::Optimizer)

Selects and deletes nodes from stack with lower bounds greater than global upper bound.

EAGO.lower_problem!Method
lower_problem!(t::ExtensionType, x::Optimizer)

Constructs and solves the relaxation using the default EAGO relaxation scheme and optimizer on node y.

EAGO.relax_objective!Method
relax_objective!(t::ExtensionType, x::Optimizer, x0::Vector{Float64})

A rountine that only relaxes the objective.

EAGO.relax_problem!Method
relax_problem!(t::ExtensionType, x::Optimizer, v::Vector{Float64}, q::Int64)

A rountine that updates the current node for the Evaluator and relaxes all nonlinear constraints and quadratic constraints.

EAGO.node_selection!Method
node_selection!(t::ExtensionType, x::Optimizer)

Selects node with the lowest lower bound in stack.

EAGO.optimize_hook!Method
optimize_hook!(t::ExtensionType, x::Optimizer)

Provides a hook for extensions to EAGO as opposed to standard global, local, or linear solvers.

EAGO.postprocess!Method
postprocess!(t::ExtensionType, x::Optimizer)

Default postprocess perfoms duality-based bound tightening on the y.

EAGO.preprocess!Method
preprocess!(t::ExtensionType, x::Optimizer)

Runs interval, linear, quadratic contractor methods followed by obbt and a constraint programming walk up to tolerances specified in EAGO.Optimizer object.

EAGO.repeat_checkMethod
repeat_check(t::ExtensionType, x::Optimizer)

Checks to see if current node should be reprocessed.

EAGO.single_storage!Method
single_storage!(t::ExtensionType, x::Optimizer)

Stores the current node to the stack after updating lower/upper bounds.

EAGO.termination_checkMethod
termination_check(t::ExtensionType, x::Optimizer)

Checks for termination of algorithm due to satisfying absolute or relative tolerance, infeasibility, or a specified limit, returns a boolean valued true if algorithm should continue.

EAGO.upper_problem!Method
upper_problem!(t::ExtensionType, x::Optimizer)

Default upper bounding problem which simply calls solve_local_nlp! to solve the nlp locally.

Internal Subroutines

EAGO.cut_updateMethod
cut_update(x::Optimizer)

Updates the internal storage in the optimizer after a valid feasible cut is added.

EAGO.default_nlp_heuresticMethod
default_nlp_heurestic(x::Optimizer, y::NodeBB)

Default check to see if the upper bounding problem should be run. By default, The upper bounding problem is run on every node up to depth upper_bounding_depth and is triggered with a probability of 0.5^(depth - upper_bounding_depth) afterwards.

EAGO.interval_boundFunction
interval_bound

Computes the natural interval extension of a MathOptInterface function s or ScalarQuadaraticFunction on a node y. Returns the lower bound if flag is true and the upper bound if flag is false.

EAGO.interval_lower_bound!Method
interval_lower_bound!(x::Optimizer, y::NodeBB)

A fallback lower bounding problem that consists of an natural interval extension calculation. This is called when the optimizer used to compute the lower bound does not return a termination and primal status code indicating that it successfully solved the relaxation to a globally optimal point.

EAGO.is_globally_optimalMethod
is_globally_optimal(t::MOI.TerminationStatusCode, r::MOI.ResultStatusCode)

Takes an MOI.TerminationStatusCode and a MOI.ResultStatusCode and returns the tuple (valid_result::Bool, feasible::Bool). The value valid_result is true if the pair of codes prove that either the subproblem solution was solved to global optimality or the subproblem solution is infeasible. The value of feasible is true if the problem is feasible and false if the problem is infeasible.

EAGO.is_feasible_solutionMethod
is_feasible_solution(t::MOI.TerminationStatusCode, r::MOI.ResultStatusCode)

Takes an MOI.TerminationStatusCode and a MOI.ResultStatusCode and returns true if this corresponds to a solution that is proven to be feasible. Returns false otherwise.

EAGO.log_iteration!Method
log_iteration!(x::Optimizer)

If 'loggingon' is true, the 'globallowerbound', 'globalupperbound', 'runtime', and 'nodecount' are stored every 'loginterval'. If 'logsubprobleminfo' then the lower bound, feasibility and run times of the subproblems are logged every 'log_interval'.

EAGO.same_boxMethod
same_box(x::NodeBB,y::NodeBB, atol::Float64)

Checks that node x and y have equal domains withing a tolerance of atol.

EAGO.solve_local_nlp!Method
solve_local_nlp!(x::Optimizer)

Constructs and solves the problem locally on on node y updated the upper solution informaton in the optimizer.

EAGO.set_dual!Method
set_dual!(x::Optimizer)

Retrieves the lower and upper duals for variable bounds from the relaxed_optimizer and sets the appropriate values in the _lower_lvd and _lower_uvd storage fields.

EAGO.update_relaxed_problem_box!Method
update_relaxed_problem_box!(x::Optimizer, y::NodeBB)

Updates the relaxed constraint by setting the constraint set of v == x*,xLi <= xi, andxi <= xUi` for each such constraint added to the relaxed optimizer.

Functions for generating console output

EAGO.print_iteration!Function
print_iteration!

Prints the iteration information based on verbosity. The header is displayed every header_interval, the iteration info is displayed every iteration_interval.

EAGO.print_node!Function
print_node!

Prints node information for the B&B problem. Node id, bound, and interval box.

EAGO.print_solution!Function
print_solution!

Prints solution information for the B&B problem. Displays first node found, solution value, solution, and time spent solving subproblems.

diff --git a/docs/build/Optimizer/domain_reduction/index.html b/docs/build/Optimizer/domain_reduction/index.html deleted file mode 100644 index f335a504..00000000 --- a/docs/build/Optimizer/domain_reduction/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Domain Reduction · EAGO.jl: Easy Advanced Global Optimization

Domain Reduction

Duality-Based Bound Tightening

Variable bound tightening based on the duality multipliers are supported.

EAGO.variable_dbbt!Function
variable_dbbt!

Tightens the bounds of the _current_node using the current global upper bound and the duality information obtained from the relaxation.

Special Forms

Bound tightening for linear forms, univariate quadratic forms, and bivariate quadratic forms are also supported.

EAGO.classify_quadratics!Function
classify_quadratics!

Classifies constraints as univariate or bivariate and adds them to storage vectors.

EAGO.univariate_kernelFunction
univariate_kernel

Kernel of the bound tightening operation on univariant qudaratic functions. Called for each univariate function.

Constraint Propagation

EAGO contains a constraint propagation architecture that supported forward and reverse evaluation of set-valued functions on the directed acyclic graph (DAG). The interval contractor and reverse McCormick relaxation-based contractors are currently available.

EAGO.cpwalkFunction
cpwalk

Performs forward-reverse pass on directed graph as part of constraint propagation.

Optimization-Based Bound Tightening

EAGO makes use of an optimization-based bound tightening scheme using filtering and greedy ordering as detailed in: Gleixner, A.M., Berthold, T., Müller, B. et al. J Glob Optim (2017) 67: 731. https://doi.org/10.1007/s10898-016-0450-4

EAGO.aggressive_filtering!Function
aggressive_filtering!

Excludes OBBT on variable indices after a search in a filtering direction.

EAGO.aggressive_obbt_on_heuresticFunction
aggressive_obbt_on_heurestic

Routine that determines if aggressive filtering should be used. Currently, a user-specified option.

EAGO.bool_indx_diffFunction
bool_indx_diff

Utility function used to set vector of booleans z to x & ~y. Avoids the generation of conversion of the BitArray created by broadcasting logical operators.

EAGO.obbtFunction
obbt

Performs OBBT with filtering and greedy ordering as detailed in: Gleixner, A.M., Berthold, T., Müller, B. et al. J Glob Optim (2017) 67: 731. https://doi.org/10.1007/s10898-016-0450-4

EAGO.trivial_filtering!Function
trivial_filtering!

Excludes OBBT on variable indices that are tight for the solution of the relaxation.

diff --git a/docs/build/Optimizer/high_performance/index.html b/docs/build/Optimizer/high_performance/index.html deleted file mode 100644 index fdcafd4e..00000000 --- a/docs/build/Optimizer/high_performance/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -High-Performance Configuration · EAGO.jl: Easy Advanced Global Optimization

High-Performance Configuration

LP Solver Selection

By default, EAGO uses GLPK for solving linear subproblems introduced. Using a commercial linear solver is highly recommended such as Gurobi, CPLEX, or XPRESS is highly recommended. Both Gurobi and CPLEX are free for academics and installation information can be found through http://www.gurobi.com/academia/academia-center and https://www.ibm.com/developerworks/community/blogs/jfp/entry/CPLEXIsFreeForStudents?lang=en, respectively.

A non-default LP solver can then be selected by the user via a series of keyword argument inputs as illustrated in the code snippet below. The relaxed_optimizer contains an instance optimizer with valid relaxations that are made at the root node and is updated with affine relaxations in place. Options can be passed to this optimizer using keyword arguments when initializing EAGO using the withoptimizer syntax in JuMP by defining an Iterators.Pairs structure assigning it to the `relaxedoptimizer_kwargs` keyword argument. MOI.


-# Create opt EAGO Optimizer with CPLEX for use with MOI routines
-opt = EAGO.Optimizer(relaxed_optimizer = Gurobi.Optimizer(OutputFlag=0))
-
-# Create the same model m using an options dictionary in JuMP
-relaxed_optimizer_kwargs = Dict{Symbol, Any}()
-opt_dict[:relaxed_optimizer] = Gurobi.Optimizer()
-opt_dict[:relaxed_optimizer_kwargs] = Iterators.Pairs([:OutputFlag], [0])
-
-m = JuMP.Model(with_optimizer(EAGO.Optimizer; opt_dict...))
-
-# Create the same model m is keyword arguments in JuMP
-m = JuMP.Model(with_optimizer(EAGO.Optimizer; relaxed_optimizer = Gurobi.Optimizer(),
-                                              relaxed_optimizer_kwargs = Iterators.Pairs([:OutputFlag], [0])))

Ipopt Build

Ipopt is the recommended solver for upper bounding problems. Ipopt's performance is highly dependent on the linear algebra package used (up to 30x). By default MUMPS is used. It's recommended that you either compile Ipopt with HSL MA57 or the Pardiso linear algebra packages with a machine specific Blas library (for Intel users the JuliaPro MKL version is recommended). For information on this, see the below links:

  • Compiling Ipopt: https://www.coin-or.org/Ipopt/documentation/node13.html
  • Julia Specifics:
    • Pointing Ipopt to a compiled version:
      • Ipopt Package Info: https://github.com/JuliaOpt/Ipopt.jl
      • Discourse discussion: https://discourse.julialang.org/t/use-ipopt-with-custom-version/9176
    • Issues using Pardiso:
      • Ubuntu: https://github.com/JuliaOpt/Ipopt.jl/issues/106
      • Windows: https://github.com/JuliaOpt/Ipopt.jl/issues/83
  • HSL Website: http://www.hsl.rl.ac.uk/ipopt/
  • Pardiso Website: https://pardiso-project.org/
diff --git a/docs/build/Optimizer/optimizer/index.html b/docs/build/Optimizer/optimizer/index.html deleted file mode 100644 index 0c3363c0..00000000 --- a/docs/build/Optimizer/optimizer/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -EAGO Optimizer · EAGO.jl: Easy Advanced Global Optimization

EAGO Optimizer

The EAGO.Optimizer object holds all algorithm solution information. A description of all user-facing options has been provided in the docstring.

EAGO.Optimizer

EAGO.OptimizerType
Optimizer

The main optimizer object used by EAGO to solve problems during the optimization routine. The following commonly used options are described below and can be set via keyword arguments in the JuMP/MOI model:

  • presolve_scrubber_flag::Bool: Replace code in user-defined functions which may prevent method overloading on Real subtypes (default = false).
  • presolve_to_JuMP_flag::Bool: Create and use DAG representations of user-defined function (default = false).
  • presolve_epigraph_flag::Bool: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Apply the epigraph reformulation to the problem (default = false).
  • presolve_cse_flag::Bool: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Enable common subexpression elimination for DAG (default = false).
  • presolve_flatten_flag::Bool: Rerranges the DAG using registered transformations (default = false)
  • cp_depth::Int64: Depth in B&B tree above which constraint propagation should be disabled (default = 1000).
  • cp_repetitions::Int64: Number of repetitions of forward-reverse passes to perform in constraint propagation (default = 3).
  • cp_tolerance::Float64: Disable constraint propagation if the ratio of new node volume to beginning node volume exceeds this number (default = 0.99).
  • cp_interval_only::Bool: Use only valid interval bounds during constraint propagation (default = false).
  • relaxed_optimizer::S: An instance of the optimizer used to solve the relaxed subproblems (default = GLPK.Optimizer()).
  • relaxed_optimizer_kwargs::Base.Iterators.Pairs: Keyword arguments for the relaxed optimizer.
  • obbt_depth::Int64: Depth in B&B tree above which OBBT should be disabled (default = 1000).
  • obbt_repetitions::Int64: Number of repetitions of OBBT to perform in preprocessing (default = 3).
  • obbt_aggressive_on::Bool: Turn aggresive OBBT on (default = false).
  • obbt_aggressive_max_iteration::Int64: Maximum iteration to perform aggresive OBBT (default = 2)
  • obbt_aggressive_min_dimension::Int64: Minimum dimension to perform aggresive OBBT (default = 2)
  • obbt_tolerance::Float64: Tolerance to consider bounds equal (default = 1E-9).
  • obbt_variable_values::Vector{Bool}: Variables to perform OBBT on (default: all variables in nonlinear expressions).
  • lp_depth::Int64: Depth in B&B tree above which linear FBBT should be disabled (default = 1000).
  • lp_repetitions::Int64: Number of repetitions of linear FBBT to perform in preprocessing (default = 3).
  • quad_uni_depth::Int64: Depth in B&B tree above which univariate quadratic FBBT should be disabled (default = -1).
  • quad_uni_repetitions::Int64: Number of repetitions of univariate quadratic FBBT to perform in preprocessing (default = 2).
  • quad_bi_depth::Int64: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Depth in B&B tree above which bivariate quadratic FBBT should be disabled (default = -1).
  • quad_bi_repetitions::Int64: Number of repetitions of bivariate quadratic FBBT to perform in preprocessing (default = 2).
  • subgrad_tighten::Bool: Perform tightening of interval bounds using subgradients at each factor in each nonlinear tape during a forward-reverse pass (default = true).
  • subgrad_tighten_reverse::Bool: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Used to enable/disable subgradient tightening of interval bounds on the reverse pass (default = true).
  • cut_max_iterations::Int64
  • cut_cvx::Float64: Convex coefficient used to select point for new added cuts. Branch point is given by (1-cut_cvx)*xmid + cut_cvx*xsol (default = 0.9).
  • cut_tolerance::Float64: Add cut if the L1 distance from the prior cutting point to the new cutting point normalized by the box volume is greater than the tolerance (default = 0.05).
  • objective_cut_on::Bool: Adds an objective cut to the relaxed problem (default = true).
  • upper_optimizer::T: Optimizer used to solve upper bounding problem (default = Ipopt.Optimizer())
  • upper_factory::JuMP.OptimizerFactory: OptimizerFactory used to build optimizer that solves the upper bounding problem (default = with_optimizer(Ipopt.Optimizer, kwargs), check Optimizer constructor for kwargs used).
  • upper_bounding_depth::Int64: Solve upper problem for every node with depth less than upper_bounding_depth and with a probability of (1/2)^(depth-upperboundingdepth) otherwise (default = 4).
  • dbbt_depth::Int64: Depth in B&B tree above which duality-based bound tightening should be disabled (default = 1E10).
  • dbbt_tolerance::Float64: New bound is considered equal to the prior bound if within dbbt_tolerance (default = 1E-9).
  • branch_cvx_factor::Float64: Convex coefficient used to select branch point. Branch point is given by branch_cvx_factor*xmid + (1-branch_cvx_factor)*xsol (default = 0.25)
  • branch_offset::Float64: Minimum distance from bound to have branch point normalized by width of dimension to branch on (default = 0.15)
  • branch_variable::Vector{Bool}: Variables to branch on (default is all nonlinear).
  • branch_max_repetitions::Int64: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Number of times repeat node processing prior to branching (default = 4).
  • branch_repetition_tol::Float64: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Volume ratio tolerance required to repeat processing the current node (default = 0.9).
  • rounding_mode::Symbol: Interval rounding mode to use (default = :accurate)
  • node_limit::Int64: Node limit (default = 10^7).
  • time_limit::Float64: Time limit in seconds (default = 3600).
  • iteration_limit::Int64: Iteration limit (default = 3000000).
  • absolute_tolerance::Float64: Absolute tolerance for terminatin (default = 1E-3).
  • relative_tolerance::Float64: Relative tolerance for terminatin (default = 1E-3).
  • local_solve_only::Bool: Perform only a local solve of the problem (default = false).
  • log_on::Bool: Turns logging on records global bounds, node count and run time. Additional options are available for recording information specific to subproblems (default = false).
  • log_subproblem_info::Bool: Turns on logging of times and feasibility of subproblems (default = false).
  • log_interval::Int64: Log data every log_interval iterations (default = 1).
  • verbosity::Int64: The amount of information that should be printed to console while solving values range from 0 - 4: 0 is silent, 1 shows iteration summary statistics only, 2-4 show varying degrees of details about calculations within each iteration (default = 1).
  • output_iterations::Int64: Display summary of iteration to console every output_iterations (default = 10).
  • header_iterations::Int64: Display header for summary to console every output_iterations (default = 100).
  • enable_optimize_hook::Bool: Specifies that the optimize_hook! function should be called rather than throw the problem to the standard B&B routine (default = false).
  • ext::Dict{Symbol, Any}: Holds additional storage needed for constructing extensions to EAGO (default = Dict{Symbol,Any}).
  • ext_type::ExtensionType: Holds an instance of a subtype of EAGO.ExtensionType used to define new custom subroutines (default = DefaultExt()).

Internal Storage Structures

EAGO.VariableInfoType
VariableInfo

A structure used to store information related to the bounds assigned to each variable.

  • is_integer::Bool: Is the variable integer valued?
  • lower_bound::Float64: May be -Inf even if haslowerbound == true
  • has_lower_bound::Bool: Implies lower_bound == Inf
  • upper_bound::Float64: May be Inf even if hasupperbound == true
  • has_upper_bound::Bool: Implies upper_bound == Inf
  • is_fixed::Bool: Implies lowerbound == upperbound and !haslowerbound and !hasupperbound.
EAGO.ExtensionTypeType
ExtensionType

An abstract type the subtypes of which are associated with functions method overloaded for for new extensions. An instance of the DefaultExt <:ExtensionType structure to the Optimizer in the ext_type field.

EAGO.LogType
Log

A structure used to store information on the history of the solution procedure for generating convergence plots and other analysis.

  • current_lower_bound::Vector{Float64}: Storage for lower bound calculated for current node.
  • current_upper_bound::Vector{Float64}: Storage for upper bound calculated for current node.
  • preprocessing_time::Vector{Float64}: Storage for preprocessing time of each iteration.
  • lower_problem_time::Vector{Float64}: Storage for lower bounding time of each iteration.
  • upper_problem_time::Vector{Float64}: Storage for upper bounding time of each iteration.
  • postprocessing_time::Vector{Float64}: Storage for postprocessing time of each iteration.
  • preprocessing_feas::Vector{Bool}: Storage for preprocessing feasibility of each iteration.
  • lower_problem_feas::Vector{Bool}: Storage for lower bounding feasibility of each iteration.
  • upper_problem_feas::Vector{Bool}: Storage for upper bounding feasibility of each iteration.
  • postprocessing_feas::Vector{Bool}: Storage for postprocessing feasibility of each iteration.
  • global_lower_bound::Vector{Float64}: Storage for best (global) lower bound at each iteration.
  • global_upper_bound::Vector{Float64}: Storage for best (global) upper bound at each iteration.

Extending EAGO

Functionality has been included that allows for extension's to EAGO's optimizer to readily be defined. This can be done in two ways first defining a new structure which is a subtype of EAGO.ExtensionType and overloading methods associated with this new structure. An instance of this new structure is provided to the EAGO.Optimizer using the ext_type keyword. This results in EAGO now dispatch to the new methods rather than the generally defined methods for the parent type. For a complete example, the reader is directed to the interval bounding example and quasiconvex example. Alternatively, the user can overload the optimize_hook! for this subtype which will entirely circumvent the default global solution routine. Additional information can be stored in the ext field of EAGO. In order to allow for compatibility between packages the user is encouraged to append their extension name to the start of each variable name (e.g. newext_newdata).

diff --git a/docs/build/Optimizer/relax_back/index.html b/docs/build/Optimizer/relax_back/index.html deleted file mode 100644 index 97b2dd34..00000000 --- a/docs/build/Optimizer/relax_back/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Relaxation Backend · EAGO.jl: Easy Advanced Global Optimization

Relaxation Backend

Quadratic Relaxations

EAGO.relax_convex_kernelFunction
relax_convex_kernel

Stores the kernel of the calculation required to relax convex quadratic constraints using the immutable dictionary to label terms.

EAGO.relax_nonconvex_kernelFunction
relax_nonconvex_kernel

Stores the kernel of the calculation required to relax nonconvex quadratic constraints using the immutable dictionary to label terms.

EAGO.relax_quadratic_gen_safFunction
relax_quadratic_gen_saf

Default routine for relaxing nonconvex quadratic constraint lower < func < upper on node n. Takes affine bounds of convex part at point x0 and secant line bounds on concave parts.

Nonlinear Relaxation

EAGO.relax_nlp!Function
relax_nlp!

A rountine that relaxes all nonlinear constraints excluding constraints specified as quadratic.

Nonlinear Storage Structures

EAGO.FunctionSetStorageType
FunctionSetStorage

A storage object for both set and number valued data required to compute relaxations which contains the tape used to compute a nonlinear function. The object is parameterized by a {N,T<:RelaxTag} where N corresponds the subgradient size used in the MC object.

  • nd::Vector{JuMP.NodeData}
  • adj::SparseMatrixCSC{Bool,Int64}
  • const_values::Vector{Float64}
  • setstorage::Vector{MC{N,T}}
  • numberstorage::Vector{Float64}
  • numvalued::Vector{Bool}
  • tp1storage::Vector{Float64}
  • tp2storage::Vector{Float64}
  • tp3storage::Vector{Float64}
  • tp4storage::Vector{Float64}
  • tpdict::Dict{Int64,Tuple{Int64,Int64,Int64,Int64}}
  • grad_sparsity::Vector{Int64}
  • hess_I::Vector{Int64}
  • hess_J::Vector{Int64}
  • dependent_subexpressions::Vector{Int64}
EAGO.SubexpressionSetStorageType
SubexpressionSetStorage

A storage object for both set and number valued data required to compute relaxations which contains the tape used to compute a nonlinear subexpression. The object is parameterized by a {N,T<:RelaxTag} where N corresponds the the subgradient size used in the MC object.

  • nd::Vector{JuMP.NodeData}
  • adj::SparseMatrixCSC{Bool,Int64}
  • const_values::Vector{Float64}
  • setstorage::Vector{MC{N,T}}
  • numberstorage::Vector{Float64}
  • numvalued::Vector{Bool}
  • tp1storage::Vector{Float64}
  • tp2storage::Vector{Float64}
  • tp3storage::Vector{Float64}
  • tp4storage::Vector{Float64}
  • tpdict::Dict{Int64,Tuple{Int64,Int64,Int64,Int64}}
  • linearity::JuMP._Derivatives.Linearity

Nonlinear Evaluator

EAGO.EvaluatorType
Evaluator

MOI.AbstractNLPEvaluator for calculating relaxations of nonlinear terms.

Internal Functions Used by Evaluator

EAGO.set_current_node!Method
set_current_node!(x::Evaluator, n::NodeBB)

Sets the current node in the Evaluator structure.

EAGO.eval_constraint_ccMethod
eval_constraint_cc(d::Evaluator, g::Vector{Float64}, y::Vector{Float64})

Populates g with the concave relaxations of the constraints of d evaluated at y.

EAGO.eval_constraint_lo!Method
eval_constraint_lo!(d::Evaluator, g::Vector{Float64})

Populates g with the lower bounds of the constraints of d.

EAGO.eval_constraint_hi!Method
eval_constraint_hi!(d::Evaluator, g::Vector{Float64})

Populates g with the upper bounds of the constraints of d.

EAGO.eval_constraint_cc_gradMethod
eval_constraint_cc_grad(d::Evaluator, g, y)

Populates g with the subgradients of the constraints of d evaluated at y.

EAGO.get_node_lowerMethod
get_node_lower(d::FunctionSetStorage, i::Int64)

Retreives the lower bound of ith term in the tape of d.

EAGO.get_node_upperMethod
get_node_upper(d::FunctionSetStorage, i::Int64)

Retreives the upper bound of ith term in the tape of d.

EAGO.forward_reverse_passMethod
forward_reverse_pass(d::Evaluator, x::Vector{Float64})

Performs a d.fw_repeats forward passes of the set-value evaluator each followed by a reverse pass if d.has_reverse as long as the node between passes differs by more that d.fw_atol at each iteration.

diff --git a/docs/build/Optimizer/starting/index.html b/docs/build/Optimizer/starting/index.html deleted file mode 100644 index 9634003f..00000000 --- a/docs/build/Optimizer/starting/index.html +++ /dev/null @@ -1,34 +0,0 @@ - -Solving simple example: an artificial neural network with EAGO · EAGO.jl: Easy Advanced Global Optimization

Solving simple example: an artificial neural network with EAGO

Matthew Wilhelm Department of Chemical and Biomolecular Engineering, University of Connecticut

In [1,2], a surrogate ANN model of bioreactor productivity was constructed by fitting results from computationally expensive CFD simulations. The author then optimized this surrogate model to obtain ideal processing conditions. This optimization problem is given by:

Input parameters

In the first block, we input parameters values supplied in the paper for $W$, $B$, $D$, and $X$ into Julia as simple array objects.

using JuMP, EAGO
-
-# Box constraints for input variables
-xLBD = [0.623   0.093   0.259   6.56   1114   0.013   0.127   0.004]
-xUBD = [5.89    0.5     1.0     90     25000  0.149   0.889   0.049]
-
-# Weights associated with the hidden layer
-W = [ 0.54  -1.97  0.09  -2.14  1.01  -0.58  0.45  0.26;
-     -0.81  -0.74  0.63  -1.60 -0.56  -1.05  1.23  0.93;
-     -0.11  -0.38 -1.19   0.43  1.21   2.78 -0.06  0.40]
-
-# Weights associated with the output layer
-D = [-0.91 0.11 0.52]
-
-# Bias associated with the hidden layer
-B1 = [-2.698 0.012 2.926]
-
-# Bias associated with the output layer
-B2 = -0.46

Construct the JuMP model and optimize

We now formulate the problem using standard JuMP[3] syntax and optimize it. Note that we are forming an NLexpression object to handle the summation term to keep the code visually simple but this could be placed directly in the JuMP expressions instead.

# Model construction
-model = Model(with_optimizer(EAGO.Optimizer, absolute_tolerance = 0.001))
-@variable(model, xLBD[i] <= x[i=1:8] <= xUBD[i])
-@NLexpression(model, prop[i=1:3], B1[i] + sum(W[i,j]*x[i] for j in 1:8))
-@NLobjective(model, Max, B2 + sum(D[i]*(2/(1+exp(-2*prop[i]))) for i=1:3))
-
-# Solves the model
-optimize!(model)

Retrieve results

We then recover the objective value, the solution value, and termination status codes using standard JuMP syntax.

# Access calculated values
-fval = JuMP.objective_value(model)
-xsol = JuMP.value.(x)
-status_term = JuMP.termination_status(model)
-status_prim = JuMP.primal_status(model)
-
-println("EAGO terminated with a status of $status_term and a result code of $status_prim")
-println("The optimal value is: $fval, the solution found is $xsol.")

Reference:

  1. J. D. Smith, A. A. Neto, S. Cremaschi, and D. W. Crunkleton, CFD-based optimization of a flooded bed algae bioreactor, Industrial & Engineering Chemistry Research, 52 (2012), pp. 7181–7188
  2. A. M. Schweidtmann and A. Mitsos. Global Deterministic Optimization with Artificial Neural Networks Embedded https://arxiv.org/pdf/1801.07114.pdf
  3. Iain Dunning and Joey Huchette and Miles Lubin. JuMP: A Modeling Language for Mathematical Optimization, SIAM Review, 59 (2017), pp. 295-320.
diff --git a/docs/build/Optimizer/udf_utilities/index.html b/docs/build/Optimizer/udf_utilities/index.html deleted file mode 100644 index 3e7248b4..00000000 --- a/docs/build/Optimizer/udf_utilities/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -User-Define Functions and DAG Utilities · EAGO.jl: Easy Advanced Global Optimization

User-Define Functions and DAG Utilities

EAGO has included basic functionality to manipulate user-defined functions. These features are largely experimental and we're interested in providing additional for novel use cases. Please contact us by opening an issue in the Github issue tracker with any questions or requests for additional features.

DAG Substitution and Flattening

EAGO.Script.dag_flattening!Function
dag_flattening!

Flattens (usually) the dag by making all registered substitutions for every nonlinear term in the Optimizer.

EAGO.Script.flatten_expression!Function
flatten_expression!

Flattens (usually) the dag by making all registered substitutions for the expression expr::_NonlinearExprData. Performs a depth-first search through the expression adding the terminal node to the stack, then checking to determine if it matches a registered substitution pattern. If it doesn't not then node is added to the new expression graph representation and it's children are added to the queue. If an expression (node) is identified as a pattern then it is substituted and any children expression nodes are then checked for patterns until the depth first search is exhausted.

EAGO.Script.register_substitution!Function
register_substitution!

Specifies that the src::Template_Graph should be subsituted out for the trg::Template_Graph.

Conventions for substition, the expression to be checked always appears at key 1 in the Template_Graph and operations are ordered from low value to high value left to right so if 1 is a -, and 4 => 1, 3 => 1 then the expression is 4 - 3

EAGO.Script.Template_GraphType
Template_Graph

Holds a list of Template_Nodes, set of directed edges, lengths, an adjacency matrix and the number of children.

EAGO.Script.Template_NodeType
Template_Node

A structure which holds a symbol indicating whether the node is an operator, a number, or an expression type, a value which identifies the function or symbol value, potentially a numeric value num_value, and a check that can be run to verify the node is correct check.

User-Defined Function (UDF) Scrubber

EAGO.Script.scrubFunction
scrub(f::Function, n::Int, inplace = false)

Replaces storage objects and circumvents assertions that present a UDF from being overloaded with subtype Real objects by creating a function which overdubs f in ScrubCtx.

EAGO.Script.scrub!Function
scrub!(d::_NLPData)

Applies scrub to every user-defined function in the a _NLPData structure.

diff --git a/docs/build/SemiInfinite/SIPProbFormulation.png b/docs/build/SemiInfinite/SIPProbFormulation.png deleted file mode 100644 index 95419e4d..00000000 Binary files a/docs/build/SemiInfinite/SIPProbFormulation.png and /dev/null differ diff --git a/docs/build/SemiInfinite/SIPformulation.png b/docs/build/SemiInfinite/SIPformulation.png deleted file mode 100644 index 8c9256fe..00000000 Binary files a/docs/build/SemiInfinite/SIPformulation.png and /dev/null differ diff --git a/docs/build/SemiInfinite/semiinfinite/index.html b/docs/build/SemiInfinite/semiinfinite/index.html deleted file mode 100644 index 99ca42e1..00000000 --- a/docs/build/SemiInfinite/semiinfinite/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -Semi-Infinite Programming · EAGO.jl: Easy Advanced Global Optimization

Solving Semi-Infinite Programming

Matthew Wilhelm Department of Chemical and Biomolecular Engineering, University of Connecticut

Using EAGO to solve a SIP

Semi-infinite programming remains an active area of research. In general, the solution of semi-infinite programs with nonconvex semi-infinite constraints of the below form are extremely challenging:

<img src="SIPProbFormulation.png" width = 50% align="center" />

EAGO implements the SIPres of [1] to determine a globally optimal solution to problems of the above form. This accomplished using the explicit_sip_solve function which returns the optimal value, the solution, and a boolean feasibility value. To illustrate the functions use, a simple example is presented here which solves the below problem:

<img src="SIPformulation.png" width = 65% align="center" />

using EAGO, JuMP
-
-# Define semi-infinite program
-f(x) = (1/3)*x[1]^2 + x[2]^2 + x[1]/2
-gSIP(x,p) = (1.0 - (x[1]^2)*(p[1]^2))^2 - x[1]*p[1]^2 - x[2]^2 + x[2]
-
-x_l = [-1000.0, -1000.0]
-x_u = [1000.0, 1000.0]
-p_l = [0.0]
-p_u = [1.0]
-
-# Solve the SIP  problem
-sip_result = explicit_sip_solve(x_l, x_u, p_l, p_u, f, gSIP)
-
-println("The global minimum of the semi-infinite program is between: $(sip_result.lower_bound) and $(sip_result.upper_bound).")
-println("The global minimum is attained at: x = $(sip_result.xsol).")
-println("Is the problem feasible? (sip_result.feasibility).")

Semi-infinite solver

EAGO.explicit_sip_solveFunction

explicitsipsolve

Solve an SIP with decision variable bounds x_l to x_u, uncertain variable bounds p_l to p_u, an objective function of f, and gSIP seminfiniite constraint(s).

EAGO.SIPProblemType
  SIPProblem

Structure storing problem information for the solution routine.

EAGO.SIPResultType
  SIPResult

Structure storing the results of the SIPres algorithm.

diff --git a/docs/build/assets/documenter.js b/docs/build/assets/documenter.js deleted file mode 100644 index 22f0f9a0..00000000 --- a/docs/build/assets/documenter.js +++ /dev/null @@ -1,260 +0,0 @@ -// Generated by Documenter.jl -requirejs.config({ - paths: { - 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia.min', - 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/headroom.min', - 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min', - 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/contrib/auto-render.min', - 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min', - 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/jQuery.headroom.min', - 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min', - 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/highlight.min', - 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia-repl.min', - }, - shim: { - "highlight-julia": { - "deps": [ - "highlight" - ] - }, - "katex-auto-render": { - "deps": [ - "katex" - ] - }, - "headroom-jquery": { - "deps": [ - "jquery", - "headroom" - ] - }, - "highlight-julia-repl": { - "deps": [ - "highlight" - ] - } -} -}); -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { -$(document).ready(function() { - renderMathInElement( - document.body, - { - "delimiters": [ - { - "left": "$", - "right": "$", - "display": false - }, - { - "left": "$$", - "right": "$$", - "display": true - }, - { - "left": "\\[", - "right": "\\]", - "display": true - } - ] -} - - ); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) { -$(document).ready(function() { - hljs.initHighlighting(); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { - -// Manages the top navigation bar (hides it when the user starts scrolling down on the -// mobile). -window.Headroom = Headroom; // work around buggy module loading? -$(document).ready(function() { - $('#documenter .docs-navbar').headroom({ - "tolerance": {"up": 10, "down": 10}, - }); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// Modal settings dialog -$(document).ready(function() { - var settings = $('#documenter-settings'); - $('#documenter-settings-button').click(function(){ - settings.toggleClass('is-active'); - }); - // Close the dialog if X is clicked - $('#documenter-settings button.delete').click(function(){ - settings.removeClass('is-active'); - }); - // Close dialog if ESC is pressed - $(document).keyup(function(e) { - if (e.keyCode == 27) settings.removeClass('is-active'); - }); -}); - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// Manages the showing and hiding of the sidebar. -$(document).ready(function() { - var sidebar = $("#documenter > .docs-sidebar"); - var sidebar_button = $("#documenter-sidebar-button") - sidebar_button.click(function(ev) { - ev.preventDefault(); - sidebar.toggleClass('visible'); - if (sidebar.hasClass('visible')) { - // Makes sure that the current menu item is visible in the sidebar. - $("#documenter .docs-menu a.is-active").focus(); - } - }); - $("#documenter > .docs-main").bind('click', function(ev) { - if ($(ev.target).is(sidebar_button)) { - return; - } - if (sidebar.hasClass('visible')) { - sidebar.removeClass('visible'); - } - }); -}) - -// Resizes the package name / sitename in the sidebar if it is too wide. -// Inspired by: https://github.com/davatron5000/FitText.js -$(document).ready(function() { - e = $("#documenter .docs-autofit"); - function resize() { - var L = parseInt(e.css('max-width'), 10); - var L0 = e.width(); - if(L0 > L) { - var h0 = parseInt(e.css('font-size'), 10); - e.css('font-size', L * h0 / L0); - // TODO: make sure it survives resizes? - } - } - // call once and then register events - resize(); - $(window).resize(resize); - $(window).on('orientationchange', resize); -}); - -// Scroll the navigation bar to the currently selected menu item -$(document).ready(function() { - var sidebar = $("#documenter .docs-menu").get(0); - var active = $("#documenter .docs-menu .is-active").get(0); - if(typeof active !== 'undefined') { - sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; - } -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -function set_theme(theme) { - var active = null; - var disabled = []; - for (var i = 0; i < document.styleSheets.length; i++) { - var ss = document.styleSheets[i]; - var themename = ss.ownerNode.getAttribute("data-theme-name"); - if(themename === null) continue; // ignore non-theme stylesheets - // Find the active theme - if(themename === theme) active = ss; - else disabled.push(ss); - } - if(active !== null) { - active.disabled = false; - if(active.ownerNode.getAttribute("data-theme-primary") === null) { - document.getElementsByTagName('html')[0].className = "theme--" + theme; - } else { - document.getElementsByTagName('html')[0].className = ""; - } - disabled.forEach(function(ss){ - ss.disabled = true; - }); - } - - // Store the theme in localStorage - if(typeof(window.localStorage) !== "undefined") { - window.localStorage.setItem("documenter-theme", theme); - } else { - console.error("Browser does not support window.localStorage"); - } -} - -// Theme picker setup -$(document).ready(function() { - // onchange callback - $('#documenter-themepicker').change(function themepick_callback(ev){ - var themename = $('#documenter-themepicker option:selected').attr('value'); - set_theme(themename); - }); - - // Make sure that the themepicker displays the correct theme when the theme is retrieved - // from localStorage - if(typeof(window.localStorage) !== "undefined") { - var theme = window.localStorage.getItem("documenter-theme"); - if(theme !== null) { - $('#documenter-themepicker option').each(function(i,e) { - e.selected = (e.value === theme); - }) - } - } -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// update the version selector with info from the siteinfo.js and ../versions.js files -$(document).ready(function() { - var version_selector = $("#documenter .docs-version-selector"); - var version_selector_select = $("#documenter .docs-version-selector select"); - - version_selector_select.change(function(x) { - target_href = version_selector_select.children("option:selected").get(0).value; - window.location.href = target_href; - }); - - // add the current version to the selector based on siteinfo.js, but only if the selector is empty - if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) { - var option = $(""); - version_selector_select.append(option); - } - - if (typeof DOC_VERSIONS !== 'undefined') { - var existing_versions = version_selector_select.children("option"); - var existing_versions_texts = existing_versions.map(function(i,x){return x.text}); - DOC_VERSIONS.forEach(function(each) { - var version_url = documenterBaseURL + "/../" + each; - var existing_id = $.inArray(each, existing_versions_texts); - // if not already in the version selector, add it as a new option, - // otherwise update the old option with the URL and enable it - if (existing_id == -1) { - var option = $(""); - version_selector_select.append(option); - } else { - var option = existing_versions[existing_id]; - option.value = version_url; - option.disabled = false; - } - }); - } - - // only show the version selector if the selector has been populated - if (version_selector_select.children("option").length > 0) { - version_selector.toggleClass("visible"); - } -}) - -}) diff --git a/docs/build/assets/search.js b/docs/build/assets/search.js deleted file mode 100644 index 42a273f5..00000000 --- a/docs/build/assets/search.js +++ /dev/null @@ -1,248 +0,0 @@ -// Generated by Documenter.jl -requirejs.config({ - paths: { - 'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.6/lunr.min', - 'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min', - 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min', - } -}); -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'lunr', 'lodash'], function($, lunr, _) { - -$(document).ready(function() { - // parseUri 1.2.2 - // (c) Steven Levithan - // MIT License - function parseUri (str) { - var o = parseUri.options, - m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), - uri = {}, - i = 14; - - while (i--) uri[o.key[i]] = m[i] || ""; - - uri[o.q.name] = {}; - uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { - if ($1) uri[o.q.name][$1] = $2; - }); - - return uri; - }; - parseUri.options = { - strictMode: false, - key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], - q: { - name: "queryKey", - parser: /(?:^|&)([^&=]*)=?([^&]*)/g - }, - parser: { - strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, - loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ - } - }; - - $("#search-form").submit(function(e) { - e.preventDefault() - }) - - // list below is the lunr 2.1.3 list minus the intersect with names(Base) - // (all, any, get, in, is, which) and (do, else, for, let, where, while, with) - // ideally we'd just filter the original list but it's not available as a variable - lunr.stopWordFilter = lunr.generateStopWordFilter([ - 'a', - 'able', - 'about', - 'across', - 'after', - 'almost', - 'also', - 'am', - 'among', - 'an', - 'and', - 'are', - 'as', - 'at', - 'be', - 'because', - 'been', - 'but', - 'by', - 'can', - 'cannot', - 'could', - 'dear', - 'did', - 'does', - 'either', - 'ever', - 'every', - 'from', - 'got', - 'had', - 'has', - 'have', - 'he', - 'her', - 'hers', - 'him', - 'his', - 'how', - 'however', - 'i', - 'if', - 'into', - 'it', - 'its', - 'just', - 'least', - 'like', - 'likely', - 'may', - 'me', - 'might', - 'most', - 'must', - 'my', - 'neither', - 'no', - 'nor', - 'not', - 'of', - 'off', - 'often', - 'on', - 'only', - 'or', - 'other', - 'our', - 'own', - 'rather', - 'said', - 'say', - 'says', - 'she', - 'should', - 'since', - 'so', - 'some', - 'than', - 'that', - 'the', - 'their', - 'them', - 'then', - 'there', - 'these', - 'they', - 'this', - 'tis', - 'to', - 'too', - 'twas', - 'us', - 'wants', - 'was', - 'we', - 'were', - 'what', - 'when', - 'who', - 'whom', - 'why', - 'will', - 'would', - 'yet', - 'you', - 'your' - ]) - - // add . as a separator, because otherwise "title": "Documenter.Anchors.add!" - // would not find anything if searching for "add!", only for the entire qualification - lunr.tokenizer.separator = /[\s\-\.]+/ - - // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names - lunr.trimmer = function (token) { - return token.update(function (s) { - return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '') - }) - } - - lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter') - lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer') - - var index = lunr(function () { - this.ref('location') - this.field('title',{boost: 100}) - this.field('text') - documenterSearchIndex['docs'].forEach(function(e) { - this.add(e) - }, this) - }) - var store = {} - - documenterSearchIndex['docs'].forEach(function(e) { - store[e.location] = {title: e.title, category: e.category} - }) - - $(function(){ - searchresults = $('#documenter-search-results'); - searchinfo = $('#documenter-search-info'); - searchbox = $('#documenter-search-query'); - function update_search(querystring) { - tokens = lunr.tokenizer(querystring) - results = index.query(function (q) { - tokens.forEach(function (t) { - q.term(t.toString(), { - fields: ["title"], - boost: 100, - usePipeline: false, - editDistance: 0, - wildcard: lunr.Query.wildcard.NONE - }) - q.term(t.toString(), { - fields: ["title"], - boost: 10, - usePipeline: false, - editDistance: 2, - wildcard: lunr.Query.wildcard.NONE - }) - q.term(t.toString(), { - fields: ["text"], - boost: 1, - usePipeline: true, - editDistance: 0, - wildcard: lunr.Query.wildcard.NONE - }) - }) - }) - searchinfo.text("Number of results: " + results.length) - searchresults.empty() - results.forEach(function(result) { - data = store[result.ref] - link = $(''+data.title+'') - link.attr('href', documenterBaseURL+'/'+result.ref) - cat = $('('+data.category+')') - li = $('
  • ').append(link).append(" ").append(cat) - searchresults.append(li) - }) - } - - function update_search_box() { - querystring = searchbox.val() - update_search(querystring) - } - - searchbox.keyup(_.debounce(update_search_box, 250)) - searchbox.change(update_search_box) - - search_query_uri = parseUri(window.location).queryKey["q"] - if(search_query_uri !== undefined) { - search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20')) - searchbox.val(search_query) - } - update_search_box(); - }) -}) - -}) diff --git a/docs/build/assets/themes/documenter-dark.css b/docs/build/assets/themes/documenter-dark.css deleted file mode 100644 index 55924295..00000000 --- a/docs/build/assets/themes/documenter-dark.css +++ /dev/null @@ -1,7623 +0,0 @@ -@charset "UTF-8"; -/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ -@keyframes spinAround { - from { - transform: rotate(0deg); } - to { - transform: rotate(359deg); } } - -html.theme--documenter-dark .delete, html.theme--documenter-dark .modal-close, .is-unselectable, html.theme--documenter-dark .button, html.theme--documenter-dark .file, html.theme--documenter-dark .breadcrumb, html.theme--documenter-dark .pagination-previous, -html.theme--documenter-dark .pagination-next, -html.theme--documenter-dark .pagination-link, -html.theme--documenter-dark .pagination-ellipsis, html.theme--documenter-dark .tabs { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after, html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after { - border: 3px solid transparent; - border-radius: 2px; - border-right: 0; - border-top: 0; - content: " "; - display: block; - height: 0.625em; - margin-top: -0.4375em; - pointer-events: none; - position: absolute; - top: 50%; - transform: rotate(-45deg); - transform-origin: center; - width: 0.625em; } - -html.theme--documenter-dark .box:not(:last-child), html.theme--documenter-dark .content:not(:last-child), html.theme--documenter-dark .notification:not(:last-child), html.theme--documenter-dark .progress:not(:last-child), html.theme--documenter-dark .table:not(:last-child), html.theme--documenter-dark .table-container:not(:last-child), html.theme--documenter-dark .title:not(:last-child), -html.theme--documenter-dark .subtitle:not(:last-child), html.theme--documenter-dark .block:not(:last-child), html.theme--documenter-dark .highlight:not(:last-child), html.theme--documenter-dark .breadcrumb:not(:last-child), html.theme--documenter-dark .level:not(:last-child), html.theme--documenter-dark .list:not(:last-child), html.theme--documenter-dark .message:not(:last-child), html.theme--documenter-dark .tabs:not(:last-child), html.theme--documenter-dark .admonition:not(:last-child) { - margin-bottom: 1.5rem; } - -html.theme--documenter-dark .delete, html.theme--documenter-dark .modal-close { - -moz-appearance: none; - -webkit-appearance: none; - background-color: rgba(10, 10, 10, 0.2); - border: none; - border-radius: 290486px; - cursor: pointer; - pointer-events: auto; - display: inline-block; - flex-grow: 0; - flex-shrink: 0; - font-size: 0; - height: 20px; - max-height: 20px; - max-width: 20px; - min-height: 20px; - min-width: 20px; - outline: none; - position: relative; - vertical-align: top; - width: 20px; } - html.theme--documenter-dark .delete::before, html.theme--documenter-dark .modal-close::before, html.theme--documenter-dark .delete::after, html.theme--documenter-dark .modal-close::after { - background-color: white; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - html.theme--documenter-dark .delete::before, html.theme--documenter-dark .modal-close::before { - height: 2px; - width: 50%; } - html.theme--documenter-dark .delete::after, html.theme--documenter-dark .modal-close::after { - height: 50%; - width: 2px; } - html.theme--documenter-dark .delete:hover, html.theme--documenter-dark .modal-close:hover, html.theme--documenter-dark .delete:focus, html.theme--documenter-dark .modal-close:focus { - background-color: rgba(10, 10, 10, 0.3); } - html.theme--documenter-dark .delete:active, html.theme--documenter-dark .modal-close:active { - background-color: rgba(10, 10, 10, 0.4); } - html.theme--documenter-dark .is-small.delete, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.delete, html.theme--documenter-dark .is-small.modal-close, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.modal-close { - height: 16px; - max-height: 16px; - max-width: 16px; - min-height: 16px; - min-width: 16px; - width: 16px; } - html.theme--documenter-dark .is-medium.delete, html.theme--documenter-dark .is-medium.modal-close { - height: 24px; - max-height: 24px; - max-width: 24px; - min-height: 24px; - min-width: 24px; - width: 24px; } - html.theme--documenter-dark .is-large.delete, html.theme--documenter-dark .is-large.modal-close { - height: 32px; - max-height: 32px; - max-width: 32px; - min-height: 32px; - min-width: 32px; - width: 32px; } - -html.theme--documenter-dark .button.is-loading::after, html.theme--documenter-dark .loader, html.theme--documenter-dark .select.is-loading::after, html.theme--documenter-dark .control.is-loading::after { - animation: spinAround 500ms infinite linear; - border: 2px solid #dbdee0; - border-radius: 290486px; - border-right-color: transparent; - border-top-color: transparent; - content: ""; - display: block; - height: 1em; - position: relative; - width: 1em; } - -.is-overlay, html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, -html.theme--documenter-dark .image.is-square .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, -html.theme--documenter-dark .image.is-1by1 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, -html.theme--documenter-dark .image.is-5by4 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, -html.theme--documenter-dark .image.is-4by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, -html.theme--documenter-dark .image.is-3by2 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, -html.theme--documenter-dark .image.is-5by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, -html.theme--documenter-dark .image.is-16by9 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, -html.theme--documenter-dark .image.is-2by1 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, -html.theme--documenter-dark .image.is-3by1 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, -html.theme--documenter-dark .image.is-4by5 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, -html.theme--documenter-dark .image.is-3by4 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, -html.theme--documenter-dark .image.is-2by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, -html.theme--documenter-dark .image.is-3by5 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, -html.theme--documenter-dark .image.is-9by16 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, -html.theme--documenter-dark .image.is-1by2 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, -html.theme--documenter-dark .image.is-1by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, html.theme--documenter-dark .modal, html.theme--documenter-dark .modal-background, html.theme--documenter-dark .hero-video { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; } - -html.theme--documenter-dark .button, html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea, html.theme--documenter-dark .select select, html.theme--documenter-dark .file-cta, -html.theme--documenter-dark .file-name, html.theme--documenter-dark .pagination-previous, -html.theme--documenter-dark .pagination-next, -html.theme--documenter-dark .pagination-link, -html.theme--documenter-dark .pagination-ellipsis { - -moz-appearance: none; - -webkit-appearance: none; - align-items: center; - border: 1px solid transparent; - border-radius: 0.4em; - box-shadow: none; - display: inline-flex; - font-size: 15px; - height: 2.25em; - justify-content: flex-start; - line-height: 1.5; - padding-bottom: calc(0.375em - 1px); - padding-left: calc(0.625em - 1px); - padding-right: calc(0.625em - 1px); - padding-top: calc(0.375em - 1px); - position: relative; - vertical-align: top; } - html.theme--documenter-dark .button:focus, html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .file-cta:focus, - html.theme--documenter-dark .file-name:focus, html.theme--documenter-dark .pagination-previous:focus, - html.theme--documenter-dark .pagination-next:focus, - html.theme--documenter-dark .pagination-link:focus, - html.theme--documenter-dark .pagination-ellipsis:focus, html.theme--documenter-dark .is-focused.button, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .is-focused.file-cta, - html.theme--documenter-dark .is-focused.file-name, html.theme--documenter-dark .is-focused.pagination-previous, - html.theme--documenter-dark .is-focused.pagination-next, - html.theme--documenter-dark .is-focused.pagination-link, - html.theme--documenter-dark .is-focused.pagination-ellipsis, html.theme--documenter-dark .button:active, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .file-cta:active, - html.theme--documenter-dark .file-name:active, html.theme--documenter-dark .pagination-previous:active, - html.theme--documenter-dark .pagination-next:active, - html.theme--documenter-dark .pagination-link:active, - html.theme--documenter-dark .pagination-ellipsis:active, html.theme--documenter-dark .is-active.button, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .select select.is-active, html.theme--documenter-dark .is-active.file-cta, - html.theme--documenter-dark .is-active.file-name, html.theme--documenter-dark .is-active.pagination-previous, - html.theme--documenter-dark .is-active.pagination-next, - html.theme--documenter-dark .is-active.pagination-link, - html.theme--documenter-dark .is-active.pagination-ellipsis { - outline: none; } - html.theme--documenter-dark .button[disabled], html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .select select[disabled], html.theme--documenter-dark .file-cta[disabled], - html.theme--documenter-dark .file-name[disabled], html.theme--documenter-dark .pagination-previous[disabled], - html.theme--documenter-dark .pagination-next[disabled], - html.theme--documenter-dark .pagination-link[disabled], - html.theme--documenter-dark .pagination-ellipsis[disabled], - fieldset[disabled] html.theme--documenter-dark .button, - html.theme--documenter-dark fieldset[disabled] .button, - fieldset[disabled] html.theme--documenter-dark .input, - html.theme--documenter-dark fieldset[disabled] .input, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, - fieldset[disabled] html.theme--documenter-dark .textarea, - html.theme--documenter-dark fieldset[disabled] .textarea, - fieldset[disabled] html.theme--documenter-dark .select select, - html.theme--documenter-dark .select fieldset[disabled] select, - fieldset[disabled] html.theme--documenter-dark .file-cta, - html.theme--documenter-dark fieldset[disabled] .file-cta, - fieldset[disabled] html.theme--documenter-dark .file-name, - html.theme--documenter-dark fieldset[disabled] .file-name, - fieldset[disabled] html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark fieldset[disabled] .pagination-previous, - fieldset[disabled] html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark fieldset[disabled] .pagination-next, - fieldset[disabled] html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark fieldset[disabled] .pagination-link, - fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis, - html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis { - cursor: not-allowed; } - -/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ -html, -body, -p, -ol, -ul, -li, -dl, -dt, -dd, -blockquote, -figure, -fieldset, -legend, -textarea, -pre, -iframe, -hr, -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0; - padding: 0; } - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: 100%; - font-weight: normal; } - -ul { - list-style: none; } - -button, -input, -select, -textarea { - margin: 0; } - -html { - box-sizing: border-box; } - -*, *::before, *::after { - box-sizing: inherit; } - -img, -embed, -iframe, -object, -video { - height: auto; - max-width: 100%; } - -audio { - max-width: 100%; } - -iframe { - border: 0; } - -table { - border-collapse: collapse; - border-spacing: 0; } - -td, -th { - padding: 0; } - td:not([align]), - th:not([align]) { - text-align: left; } - -.is-clearfix::after { - clear: both; - content: " "; - display: table; } - -.is-pulled-left { - float: left !important; } - -.is-pulled-right { - float: right !important; } - -.is-clipped { - overflow: hidden !important; } - -.is-size-1 { - font-size: 3rem !important; } - -.is-size-2 { - font-size: 2.5rem !important; } - -.is-size-3 { - font-size: 2rem !important; } - -.is-size-4 { - font-size: 1.5rem !important; } - -.is-size-5 { - font-size: 1.25rem !important; } - -.is-size-6 { - font-size: 15px !important; } - -.is-size-7, html.theme--documenter-dark .docstring > section > a.docs-sourcelink { - font-size: 0.85em !important; } - -@media screen and (max-width: 768px) { - .is-size-1-mobile { - font-size: 3rem !important; } - .is-size-2-mobile { - font-size: 2.5rem !important; } - .is-size-3-mobile { - font-size: 2rem !important; } - .is-size-4-mobile { - font-size: 1.5rem !important; } - .is-size-5-mobile { - font-size: 1.25rem !important; } - .is-size-6-mobile { - font-size: 15px !important; } - .is-size-7-mobile { - font-size: 0.85em !important; } } - -@media screen and (min-width: 769px), print { - .is-size-1-tablet { - font-size: 3rem !important; } - .is-size-2-tablet { - font-size: 2.5rem !important; } - .is-size-3-tablet { - font-size: 2rem !important; } - .is-size-4-tablet { - font-size: 1.5rem !important; } - .is-size-5-tablet { - font-size: 1.25rem !important; } - .is-size-6-tablet { - font-size: 15px !important; } - .is-size-7-tablet { - font-size: 0.85em !important; } } - -@media screen and (max-width: 1055px) { - .is-size-1-touch { - font-size: 3rem !important; } - .is-size-2-touch { - font-size: 2.5rem !important; } - .is-size-3-touch { - font-size: 2rem !important; } - .is-size-4-touch { - font-size: 1.5rem !important; } - .is-size-5-touch { - font-size: 1.25rem !important; } - .is-size-6-touch { - font-size: 15px !important; } - .is-size-7-touch { - font-size: 0.85em !important; } } - -@media screen and (min-width: 1056px) { - .is-size-1-desktop { - font-size: 3rem !important; } - .is-size-2-desktop { - font-size: 2.5rem !important; } - .is-size-3-desktop { - font-size: 2rem !important; } - .is-size-4-desktop { - font-size: 1.5rem !important; } - .is-size-5-desktop { - font-size: 1.25rem !important; } - .is-size-6-desktop { - font-size: 15px !important; } - .is-size-7-desktop { - font-size: 0.85em !important; } } - -@media screen and (min-width: 1216px) { - .is-size-1-widescreen { - font-size: 3rem !important; } - .is-size-2-widescreen { - font-size: 2.5rem !important; } - .is-size-3-widescreen { - font-size: 2rem !important; } - .is-size-4-widescreen { - font-size: 1.5rem !important; } - .is-size-5-widescreen { - font-size: 1.25rem !important; } - .is-size-6-widescreen { - font-size: 15px !important; } - .is-size-7-widescreen { - font-size: 0.85em !important; } } - -@media screen and (min-width: 1408px) { - .is-size-1-fullhd { - font-size: 3rem !important; } - .is-size-2-fullhd { - font-size: 2.5rem !important; } - .is-size-3-fullhd { - font-size: 2rem !important; } - .is-size-4-fullhd { - font-size: 1.5rem !important; } - .is-size-5-fullhd { - font-size: 1.25rem !important; } - .is-size-6-fullhd { - font-size: 15px !important; } - .is-size-7-fullhd { - font-size: 0.85em !important; } } - -.has-text-centered { - text-align: center !important; } - -.has-text-justified { - text-align: justify !important; } - -.has-text-left { - text-align: left !important; } - -.has-text-right { - text-align: right !important; } - -@media screen and (max-width: 768px) { - .has-text-centered-mobile { - text-align: center !important; } } - -@media screen and (min-width: 769px), print { - .has-text-centered-tablet { - text-align: center !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-centered-tablet-only { - text-align: center !important; } } - -@media screen and (max-width: 1055px) { - .has-text-centered-touch { - text-align: center !important; } } - -@media screen and (min-width: 1056px) { - .has-text-centered-desktop { - text-align: center !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-centered-desktop-only { - text-align: center !important; } } - -@media screen and (min-width: 1216px) { - .has-text-centered-widescreen { - text-align: center !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-centered-widescreen-only { - text-align: center !important; } } - -@media screen and (min-width: 1408px) { - .has-text-centered-fullhd { - text-align: center !important; } } - -@media screen and (max-width: 768px) { - .has-text-justified-mobile { - text-align: justify !important; } } - -@media screen and (min-width: 769px), print { - .has-text-justified-tablet { - text-align: justify !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-justified-tablet-only { - text-align: justify !important; } } - -@media screen and (max-width: 1055px) { - .has-text-justified-touch { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) { - .has-text-justified-desktop { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-justified-desktop-only { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) { - .has-text-justified-widescreen { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-justified-widescreen-only { - text-align: justify !important; } } - -@media screen and (min-width: 1408px) { - .has-text-justified-fullhd { - text-align: justify !important; } } - -@media screen and (max-width: 768px) { - .has-text-left-mobile { - text-align: left !important; } } - -@media screen and (min-width: 769px), print { - .has-text-left-tablet { - text-align: left !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-left-tablet-only { - text-align: left !important; } } - -@media screen and (max-width: 1055px) { - .has-text-left-touch { - text-align: left !important; } } - -@media screen and (min-width: 1056px) { - .has-text-left-desktop { - text-align: left !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-left-desktop-only { - text-align: left !important; } } - -@media screen and (min-width: 1216px) { - .has-text-left-widescreen { - text-align: left !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-left-widescreen-only { - text-align: left !important; } } - -@media screen and (min-width: 1408px) { - .has-text-left-fullhd { - text-align: left !important; } } - -@media screen and (max-width: 768px) { - .has-text-right-mobile { - text-align: right !important; } } - -@media screen and (min-width: 769px), print { - .has-text-right-tablet { - text-align: right !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-right-tablet-only { - text-align: right !important; } } - -@media screen and (max-width: 1055px) { - .has-text-right-touch { - text-align: right !important; } } - -@media screen and (min-width: 1056px) { - .has-text-right-desktop { - text-align: right !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-right-desktop-only { - text-align: right !important; } } - -@media screen and (min-width: 1216px) { - .has-text-right-widescreen { - text-align: right !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-right-widescreen-only { - text-align: right !important; } } - -@media screen and (min-width: 1408px) { - .has-text-right-fullhd { - text-align: right !important; } } - -.is-capitalized { - text-transform: capitalize !important; } - -.is-lowercase { - text-transform: lowercase !important; } - -.is-uppercase { - text-transform: uppercase !important; } - -.is-italic { - font-style: italic !important; } - -.has-text-white { - color: white !important; } - -a.has-text-white:hover, a.has-text-white:focus { - color: #e6e6e6 !important; } - -.has-background-white { - background-color: white !important; } - -.has-text-black { - color: #0a0a0a !important; } - -a.has-text-black:hover, a.has-text-black:focus { - color: black !important; } - -.has-background-black { - background-color: #0a0a0a !important; } - -.has-text-light { - color: #ecf0f1 !important; } - -a.has-text-light:hover, a.has-text-light:focus { - color: #cfd9db !important; } - -.has-background-light { - background-color: #ecf0f1 !important; } - -.has-text-dark { - color: #282f2f !important; } - -a.has-text-dark:hover, a.has-text-dark:focus { - color: #111414 !important; } - -.has-background-dark { - background-color: #282f2f !important; } - -.has-text-primary { - color: #375a7f !important; } - -a.has-text-primary:hover, a.has-text-primary:focus { - color: #28415b !important; } - -.has-background-primary { - background-color: #375a7f !important; } - -.has-text-link { - color: #1abc9c !important; } - -a.has-text-link:hover, a.has-text-link:focus { - color: #148f77 !important; } - -.has-background-link { - background-color: #1abc9c !important; } - -.has-text-info { - color: #024c7d !important; } - -a.has-text-info:hover, a.has-text-info:focus { - color: #012d4b !important; } - -.has-background-info { - background-color: #024c7d !important; } - -.has-text-success { - color: #008438 !important; } - -a.has-text-success:hover, a.has-text-success:focus { - color: #005122 !important; } - -.has-background-success { - background-color: #008438 !important; } - -.has-text-warning { - color: #ad8100 !important; } - -a.has-text-warning:hover, a.has-text-warning:focus { - color: #7a5b00 !important; } - -.has-background-warning { - background-color: #ad8100 !important; } - -.has-text-danger { - color: #9e1b0d !important; } - -a.has-text-danger:hover, a.has-text-danger:focus { - color: #6f1309 !important; } - -.has-background-danger { - background-color: #9e1b0d !important; } - -.has-text-black-bis { - color: #121212 !important; } - -.has-background-black-bis { - background-color: #121212 !important; } - -.has-text-black-ter { - color: #242424 !important; } - -.has-background-black-ter { - background-color: #242424 !important; } - -.has-text-grey-darker { - color: #282f2f !important; } - -.has-background-grey-darker { - background-color: #282f2f !important; } - -.has-text-grey-dark { - color: #343c3d !important; } - -.has-background-grey-dark { - background-color: #343c3d !important; } - -.has-text-grey { - color: #5e6d6f !important; } - -.has-background-grey { - background-color: #5e6d6f !important; } - -.has-text-grey-light { - color: #8c9b9d !important; } - -.has-background-grey-light { - background-color: #8c9b9d !important; } - -.has-text-grey-lighter { - color: #dbdee0 !important; } - -.has-background-grey-lighter { - background-color: #dbdee0 !important; } - -.has-text-white-ter { - color: #ecf0f1 !important; } - -.has-background-white-ter { - background-color: #ecf0f1 !important; } - -.has-text-white-bis { - color: #fafafa !important; } - -.has-background-white-bis { - background-color: #fafafa !important; } - -.has-text-weight-light { - font-weight: 300 !important; } - -.has-text-weight-normal { - font-weight: 400 !important; } - -.has-text-weight-medium { - font-weight: 500 !important; } - -.has-text-weight-semibold { - font-weight: 600 !important; } - -.has-text-weight-bold { - font-weight: 700 !important; } - -.is-family-primary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-secondary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-sans-serif { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-monospace { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-family-code { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-block { - display: block !important; } - -@media screen and (max-width: 768px) { - .is-block-mobile { - display: block !important; } } - -@media screen and (min-width: 769px), print { - .is-block-tablet { - display: block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-block-tablet-only { - display: block !important; } } - -@media screen and (max-width: 1055px) { - .is-block-touch { - display: block !important; } } - -@media screen and (min-width: 1056px) { - .is-block-desktop { - display: block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-block-desktop-only { - display: block !important; } } - -@media screen and (min-width: 1216px) { - .is-block-widescreen { - display: block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-block-widescreen-only { - display: block !important; } } - -@media screen and (min-width: 1408px) { - .is-block-fullhd { - display: block !important; } } - -.is-flex { - display: flex !important; } - -@media screen and (max-width: 768px) { - .is-flex-mobile { - display: flex !important; } } - -@media screen and (min-width: 769px), print { - .is-flex-tablet { - display: flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-flex-tablet-only { - display: flex !important; } } - -@media screen and (max-width: 1055px) { - .is-flex-touch { - display: flex !important; } } - -@media screen and (min-width: 1056px) { - .is-flex-desktop { - display: flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-flex-desktop-only { - display: flex !important; } } - -@media screen and (min-width: 1216px) { - .is-flex-widescreen { - display: flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-flex-widescreen-only { - display: flex !important; } } - -@media screen and (min-width: 1408px) { - .is-flex-fullhd { - display: flex !important; } } - -.is-inline { - display: inline !important; } - -@media screen and (max-width: 768px) { - .is-inline-mobile { - display: inline !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-tablet { - display: inline !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-tablet-only { - display: inline !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-touch { - display: inline !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-desktop { - display: inline !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-desktop-only { - display: inline !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-widescreen { - display: inline !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-widescreen-only { - display: inline !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-fullhd { - display: inline !important; } } - -.is-inline-block { - display: inline-block !important; } - -@media screen and (max-width: 768px) { - .is-inline-block-mobile { - display: inline-block !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-block-tablet { - display: inline-block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-block-tablet-only { - display: inline-block !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-block-touch { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-block-desktop { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-block-desktop-only { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-block-widescreen { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-block-widescreen-only { - display: inline-block !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-block-fullhd { - display: inline-block !important; } } - -.is-inline-flex { - display: inline-flex !important; } - -@media screen and (max-width: 768px) { - .is-inline-flex-mobile { - display: inline-flex !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-flex-tablet { - display: inline-flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-flex-tablet-only { - display: inline-flex !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-flex-touch { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-flex-desktop { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-flex-desktop-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-flex-widescreen { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-flex-widescreen-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-flex-fullhd { - display: inline-flex !important; } } - -.is-hidden { - display: none !important; } - -.is-sr-only { - border: none !important; - clip: rect(0, 0, 0, 0) !important; - height: 0.01em !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - white-space: nowrap !important; - width: 0.01em !important; } - -@media screen and (max-width: 768px) { - .is-hidden-mobile { - display: none !important; } } - -@media screen and (min-width: 769px), print { - .is-hidden-tablet { - display: none !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-hidden-tablet-only { - display: none !important; } } - -@media screen and (max-width: 1055px) { - .is-hidden-touch { - display: none !important; } } - -@media screen and (min-width: 1056px) { - .is-hidden-desktop { - display: none !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-hidden-desktop-only { - display: none !important; } } - -@media screen and (min-width: 1216px) { - .is-hidden-widescreen { - display: none !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-hidden-widescreen-only { - display: none !important; } } - -@media screen and (min-width: 1408px) { - .is-hidden-fullhd { - display: none !important; } } - -.is-invisible { - visibility: hidden !important; } - -@media screen and (max-width: 768px) { - .is-invisible-mobile { - visibility: hidden !important; } } - -@media screen and (min-width: 769px), print { - .is-invisible-tablet { - visibility: hidden !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-invisible-tablet-only { - visibility: hidden !important; } } - -@media screen and (max-width: 1055px) { - .is-invisible-touch { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) { - .is-invisible-desktop { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-invisible-desktop-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) { - .is-invisible-widescreen { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-invisible-widescreen-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1408px) { - .is-invisible-fullhd { - visibility: hidden !important; } } - -.is-marginless { - margin: 0 !important; } - -.is-paddingless { - padding: 0 !important; } - -.is-radiusless { - border-radius: 0 !important; } - -.is-shadowless { - box-shadow: none !important; } - -.is-relative { - position: relative !important; } - -html.theme--documenter-dark { - /* This file contain the overall layout. - * - * The main container is
    that is identified by id #documenter. - */ - /* a11y-dark theme */ - /* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ - /* @author: ericwbailey */ - /* Comment */ - /* Red */ - /* Orange */ - /* Yellow */ - /* Green */ - /* Blue */ - /* Purple */ } - html.theme--documenter-dark html { - background-color: #1f2424; - font-size: 16px; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - min-width: 300px; - overflow-x: auto; - overflow-y: scroll; - text-rendering: optimizeLegibility; - text-size-adjust: 100%; } - html.theme--documenter-dark article, - html.theme--documenter-dark aside, - html.theme--documenter-dark figure, - html.theme--documenter-dark footer, - html.theme--documenter-dark header, - html.theme--documenter-dark hgroup, - html.theme--documenter-dark section { - display: block; } - html.theme--documenter-dark body, - html.theme--documenter-dark button, - html.theme--documenter-dark input, - html.theme--documenter-dark select, - html.theme--documenter-dark textarea { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } - html.theme--documenter-dark code, - html.theme--documenter-dark pre { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } - html.theme--documenter-dark body { - color: #fff; - font-size: 1em; - font-weight: 400; - line-height: 1.5; } - html.theme--documenter-dark a { - color: #1abc9c; - cursor: pointer; - text-decoration: none; } - html.theme--documenter-dark a strong { - color: currentColor; } - html.theme--documenter-dark a:hover { - color: #1dd2af; } - html.theme--documenter-dark code { - background-color: rgba(255, 255, 255, 0.05); - color: #e74c3c; - font-size: 0.875em; - font-weight: normal; - padding: 0.1em; } - html.theme--documenter-dark hr { - background-color: #282f2f; - border: none; - display: block; - height: 2px; - margin: 1.5rem 0; } - html.theme--documenter-dark img { - height: auto; - max-width: 100%; } - html.theme--documenter-dark input[type="checkbox"], - html.theme--documenter-dark input[type="radio"] { - vertical-align: baseline; } - html.theme--documenter-dark small { - font-size: 0.875em; } - html.theme--documenter-dark span { - font-style: inherit; - font-weight: inherit; } - html.theme--documenter-dark strong { - color: #f2f2f2; - font-weight: 700; } - html.theme--documenter-dark fieldset { - border: none; } - html.theme--documenter-dark pre { - -webkit-overflow-scrolling: touch; - background-color: #282f2f; - color: #fff; - font-size: 0.875em; - overflow-x: auto; - padding: 1.25rem 1.5rem; - white-space: pre; - word-wrap: normal; } - html.theme--documenter-dark pre code { - background-color: transparent; - color: currentColor; - font-size: 1em; - padding: 0; } - html.theme--documenter-dark table td, - html.theme--documenter-dark table th { - vertical-align: top; } - html.theme--documenter-dark table td:not([align]), - html.theme--documenter-dark table th:not([align]) { - text-align: left; } - html.theme--documenter-dark table th { - color: #f2f2f2; } - html.theme--documenter-dark .box { - background-color: #343c3d; - border-radius: 8px; - box-shadow: none; - color: #fff; - display: block; - padding: 1.25rem; } - html.theme--documenter-dark a.box:hover, html.theme--documenter-dark a.box:focus { - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #1abc9c; } - html.theme--documenter-dark a.box:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #1abc9c; } - html.theme--documenter-dark .button { - background-color: #282f2f; - border-color: #4c5759; - border-width: 1px; - color: #375a7f; - cursor: pointer; - justify-content: center; - padding-bottom: calc(0.375em - 1px); - padding-left: 0.75em; - padding-right: 0.75em; - padding-top: calc(0.375em - 1px); - text-align: center; - white-space: nowrap; } - html.theme--documenter-dark .button strong { - color: inherit; } - html.theme--documenter-dark .button .icon, html.theme--documenter-dark .button .icon.is-small, html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search > input.icon, html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search > input.icon, html.theme--documenter-dark .button .icon.is-medium, html.theme--documenter-dark .button .icon.is-large { - height: 1.5em; - width: 1.5em; } - html.theme--documenter-dark .button .icon:first-child:not(:last-child) { - margin-left: calc(-0.375em - 1px); - margin-right: 0.1875em; } - html.theme--documenter-dark .button .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: calc(-0.375em - 1px); } - html.theme--documenter-dark .button .icon:first-child:last-child { - margin-left: calc(-0.375em - 1px); - margin-right: calc(-0.375em - 1px); } - html.theme--documenter-dark .button:hover, html.theme--documenter-dark .button.is-hovered { - border-color: #8c9b9d; - color: #f2f2f2; } - html.theme--documenter-dark .button:focus, html.theme--documenter-dark .button.is-focused { - border-color: #8c9b9d; - color: #17a689; } - html.theme--documenter-dark .button:focus:not(:active), html.theme--documenter-dark .button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .button:active, html.theme--documenter-dark .button.is-active { - border-color: #343c3d; - color: #f2f2f2; } - html.theme--documenter-dark .button.is-text { - background-color: transparent; - border-color: transparent; - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .button.is-text:hover, html.theme--documenter-dark .button.is-text.is-hovered, html.theme--documenter-dark .button.is-text:focus, html.theme--documenter-dark .button.is-text.is-focused { - background-color: #282f2f; - color: #f2f2f2; } - html.theme--documenter-dark .button.is-text:active, html.theme--documenter-dark .button.is-text.is-active { - background-color: #1d2122; - color: #f2f2f2; } - html.theme--documenter-dark .button.is-text[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-text { - background-color: transparent; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-white { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white:hover, html.theme--documenter-dark .button.is-white.is-hovered { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white:focus, html.theme--documenter-dark .button.is-white.is-focused { - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white:focus:not(:active), html.theme--documenter-dark .button.is-white.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white.is-active { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white { - background-color: white; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-white.is-inverted { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .button.is-white.is-inverted:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-hovered { - background-color: black; } - html.theme--documenter-dark .button.is-white.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; - color: white; } - html.theme--documenter-dark .button.is-white.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - html.theme--documenter-dark .button.is-white.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-outlined.is-focused { - background-color: white; - border-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-white.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black:hover, html.theme--documenter-dark .button.is-black.is-hovered { - background-color: #040404; - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black:focus, html.theme--documenter-dark .button.is-black.is-focused { - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black:focus:not(:active), html.theme--documenter-dark .button.is-black.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black.is-active { - background-color: black; - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-black.is-inverted { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-inverted:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-black.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted { - background-color: white; - border-color: transparent; - box-shadow: none; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-loading::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-outlined.is-focused { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-black.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - html.theme--documenter-dark .button.is-light { - background-color: #ecf0f1; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light:hover, html.theme--documenter-dark .button.is-light.is-hovered { - background-color: #e5eaec; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light:focus, html.theme--documenter-dark .button.is-light.is-focused { - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light:focus:not(:active), html.theme--documenter-dark .button.is-light.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } - html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light.is-active { - background-color: #dde4e6; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light { - background-color: #ecf0f1; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-light.is-inverted { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-inverted:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-hovered { - background-color: #1d2122; } - html.theme--documenter-dark .button.is-light.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted { - background-color: #282f2f; - border-color: transparent; - box-shadow: none; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-loading::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-light.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-outlined.is-focused { - background-color: #ecf0f1; - border-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-light.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - box-shadow: none; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #282f2f; - color: #282f2f; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #282f2f; - box-shadow: none; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark, html.theme--documenter-dark .content kbd.button { - background-color: #282f2f; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover, html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered { - background-color: #232829; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused { - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark:focus:not(:active), html.theme--documenter-dark .content kbd.button:focus:not(:active), html.theme--documenter-dark .button.is-dark.is-focused:not(:active), html.theme--documenter-dark .content kbd.button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } - html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active { - background-color: #1d2122; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark[disabled], html.theme--documenter-dark .content kbd.button[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark, - fieldset[disabled] html.theme--documenter-dark .content kbd.button { - background-color: #282f2f; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-dark.is-inverted, html.theme--documenter-dark .content kbd.button.is-inverted { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-inverted:hover, html.theme--documenter-dark .content kbd.button.is-inverted:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered { - background-color: #dde4e6; } - html.theme--documenter-dark .button.is-dark.is-inverted[disabled], html.theme--documenter-dark .content kbd.button.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted, - fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted { - background-color: #ecf0f1; - border-color: transparent; - box-shadow: none; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-loading::after, html.theme--documenter-dark .content kbd.button.is-loading::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-dark.is-outlined, html.theme--documenter-dark .content kbd.button.is-outlined { - background-color: transparent; - border-color: #282f2f; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-outlined.is-focused { - background-color: #282f2f; - border-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-dark.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined, - fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined { - background-color: transparent; - border-color: #282f2f; - box-shadow: none; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, - fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - box-shadow: none; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-primary, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { - background-color: #375a7f; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink { - background-color: #335476; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary:focus:not(:active), html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus:not(:active), html.theme--documenter-dark .button.is-primary.is-focused:not(:active), html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { - box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } - html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink { - background-color: #2f4d6d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary[disabled], html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { - background-color: #375a7f; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-primary.is-inverted, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-inverted:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-primary.is-inverted[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-loading.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-primary.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #375a7f; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { - background-color: #375a7f; - border-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { - border-color: transparent transparent #375a7f #375a7f !important; } - html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-primary.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #375a7f; - box-shadow: none; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { - background-color: #fff; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #375a7f #375a7f !important; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-link { - background-color: #1abc9c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link:hover, html.theme--documenter-dark .button.is-link.is-hovered { - background-color: #18b193; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link:focus, html.theme--documenter-dark .button.is-link.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link:focus:not(:active), html.theme--documenter-dark .button.is-link.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link.is-active { - background-color: #17a689; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link { - background-color: #1abc9c; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-link.is-inverted { - background-color: #fff; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-inverted:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-link.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-link.is-outlined { - background-color: transparent; - border-color: #1abc9c; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-outlined.is-focused { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after { - border-color: transparent transparent #1abc9c #1abc9c !important; } - html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-link.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined { - background-color: transparent; - border-color: #1abc9c; - box-shadow: none; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #1abc9c #1abc9c !important; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-info { - background-color: #024c7d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info:hover, html.theme--documenter-dark .button.is-info.is-hovered { - background-color: #024470; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info:focus, html.theme--documenter-dark .button.is-info.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info:focus:not(:active), html.theme--documenter-dark .button.is-info.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } - html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info.is-active { - background-color: #023d64; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info { - background-color: #024c7d; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-info.is-inverted { - background-color: #fff; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-inverted:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-info.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-info.is-outlined { - background-color: transparent; - border-color: #024c7d; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-outlined.is-focused { - background-color: #024c7d; - border-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after { - border-color: transparent transparent #024c7d #024c7d !important; } - html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-info.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined { - background-color: transparent; - border-color: #024c7d; - box-shadow: none; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #024c7d #024c7d !important; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-success { - background-color: #008438; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success:hover, html.theme--documenter-dark .button.is-success.is-hovered { - background-color: #007733; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success:focus, html.theme--documenter-dark .button.is-success.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success:focus:not(:active), html.theme--documenter-dark .button.is-success.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } - html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success.is-active { - background-color: #006b2d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success { - background-color: #008438; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-success.is-inverted { - background-color: #fff; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-inverted:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-success.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-success.is-outlined { - background-color: transparent; - border-color: #008438; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-outlined.is-focused { - background-color: #008438; - border-color: #008438; - color: #fff; } - html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after { - border-color: transparent transparent #008438 #008438 !important; } - html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-success.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined { - background-color: transparent; - border-color: #008438; - box-shadow: none; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #008438 #008438 !important; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-warning { - background-color: #ad8100; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning:hover, html.theme--documenter-dark .button.is-warning.is-hovered { - background-color: #a07700; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning:focus, html.theme--documenter-dark .button.is-warning.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning:focus:not(:active), html.theme--documenter-dark .button.is-warning.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } - html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning.is-active { - background-color: #946e00; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning { - background-color: #ad8100; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-warning.is-inverted { - background-color: #fff; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-inverted:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-warning.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ad8100; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-outlined.is-focused { - background-color: #ad8100; - border-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after { - border-color: transparent transparent #ad8100 #ad8100 !important; } - html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-warning.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ad8100; - box-shadow: none; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ad8100 #ad8100 !important; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-danger { - background-color: #9e1b0d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger:hover, html.theme--documenter-dark .button.is-danger.is-hovered { - background-color: #92190c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger:focus, html.theme--documenter-dark .button.is-danger.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger:focus:not(:active), html.theme--documenter-dark .button.is-danger.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } - html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger.is-active { - background-color: #86170b; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger { - background-color: #9e1b0d; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-danger.is-inverted { - background-color: #fff; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-inverted:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-danger.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-danger.is-outlined { - background-color: transparent; - border-color: #9e1b0d; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-outlined.is-focused { - background-color: #9e1b0d; - border-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after { - border-color: transparent transparent #9e1b0d #9e1b0d !important; } - html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-danger.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined { - background-color: transparent; - border-color: #9e1b0d; - box-shadow: none; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #9e1b0d #9e1b0d !important; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .button.is-normal { - font-size: 15px; } - html.theme--documenter-dark .button.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .button.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .button[disabled], - fieldset[disabled] html.theme--documenter-dark .button { - background-color: #8c9b9d; - border-color: #dbdee0; - box-shadow: none; - opacity: 0.5; } - html.theme--documenter-dark .button.is-fullwidth { - display: flex; - width: 100%; } - html.theme--documenter-dark .button.is-loading { - color: transparent !important; - pointer-events: none; } - html.theme--documenter-dark .button.is-loading::after { - position: absolute; - left: calc(50% - (1em / 2)); - top: calc(50% - (1em / 2)); - position: absolute !important; } - html.theme--documenter-dark .button.is-static { - background-color: #282f2f; - border-color: #5e6d6f; - color: #dbdee0; - box-shadow: none; - pointer-events: none; } - html.theme--documenter-dark .button.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - html.theme--documenter-dark .buttons { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - html.theme--documenter-dark .buttons .button { - margin-bottom: 0.5rem; } - html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth) { - margin-right: 0.5rem; } - html.theme--documenter-dark .buttons:last-child { - margin-bottom: -0.5rem; } - html.theme--documenter-dark .buttons:not(:last-child) { - margin-bottom: 1rem; } - html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { - font-size: 1.25rem; } - html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { - font-size: 1.5rem; } - html.theme--documenter-dark .buttons.has-addons .button:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .buttons.has-addons .button:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - margin-right: -1px; } - html.theme--documenter-dark .buttons.has-addons .button:last-child { - margin-right: 0; } - html.theme--documenter-dark .buttons.has-addons .button:hover, html.theme--documenter-dark .buttons.has-addons .button.is-hovered { - z-index: 2; } - html.theme--documenter-dark .buttons.has-addons .button:focus, html.theme--documenter-dark .buttons.has-addons .button.is-focused, html.theme--documenter-dark .buttons.has-addons .button:active, html.theme--documenter-dark .buttons.has-addons .button.is-active, html.theme--documenter-dark .buttons.has-addons .button.is-selected { - z-index: 3; } - html.theme--documenter-dark .buttons.has-addons .button:focus:hover, html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover, html.theme--documenter-dark .buttons.has-addons .button:active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover { - z-index: 4; } - html.theme--documenter-dark .buttons.has-addons .button.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .buttons.is-centered { - justify-content: center; } - html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - html.theme--documenter-dark .buttons.is-right { - justify-content: flex-end; } - html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - html.theme--documenter-dark .container { - flex-grow: 1; - margin: 0 auto; - position: relative; - width: auto; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .container { - max-width: 992px; } - html.theme--documenter-dark .container.is-fluid { - margin-left: 32px; - margin-right: 32px; - max-width: none; } } - @media screen and (max-width: 1215px) { - html.theme--documenter-dark .container.is-widescreen { - max-width: 1152px; } } - @media screen and (max-width: 1407px) { - html.theme--documenter-dark .container.is-fullhd { - max-width: 1344px; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .container { - max-width: 1152px; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .container { - max-width: 1344px; } } - html.theme--documenter-dark .content li + li { - margin-top: 0.25em; } - html.theme--documenter-dark .content p:not(:last-child), - html.theme--documenter-dark .content dl:not(:last-child), - html.theme--documenter-dark .content ol:not(:last-child), - html.theme--documenter-dark .content ul:not(:last-child), - html.theme--documenter-dark .content blockquote:not(:last-child), - html.theme--documenter-dark .content pre:not(:last-child), - html.theme--documenter-dark .content table:not(:last-child) { - margin-bottom: 1em; } - html.theme--documenter-dark .content h1, - html.theme--documenter-dark .content h2, - html.theme--documenter-dark .content h3, - html.theme--documenter-dark .content h4, - html.theme--documenter-dark .content h5, - html.theme--documenter-dark .content h6 { - color: #f2f2f2; - font-weight: 600; - line-height: 1.125; } - html.theme--documenter-dark .content h1 { - font-size: 2em; - margin-bottom: 0.5em; } - html.theme--documenter-dark .content h1:not(:first-child) { - margin-top: 1em; } - html.theme--documenter-dark .content h2 { - font-size: 1.75em; - margin-bottom: 0.5714em; } - html.theme--documenter-dark .content h2:not(:first-child) { - margin-top: 1.1428em; } - html.theme--documenter-dark .content h3 { - font-size: 1.5em; - margin-bottom: 0.6666em; } - html.theme--documenter-dark .content h3:not(:first-child) { - margin-top: 1.3333em; } - html.theme--documenter-dark .content h4 { - font-size: 1.25em; - margin-bottom: 0.8em; } - html.theme--documenter-dark .content h5 { - font-size: 1.125em; - margin-bottom: 0.8888em; } - html.theme--documenter-dark .content h6 { - font-size: 1em; - margin-bottom: 1em; } - html.theme--documenter-dark .content blockquote { - background-color: #282f2f; - border-left: 5px solid #5e6d6f; - padding: 1.25em 1.5em; } - html.theme--documenter-dark .content ol { - list-style-position: outside; - margin-left: 2em; - margin-top: 1em; } - html.theme--documenter-dark .content ol:not([type]) { - list-style-type: decimal; } - html.theme--documenter-dark .content ol:not([type]).is-lower-alpha { - list-style-type: lower-alpha; } - html.theme--documenter-dark .content ol:not([type]).is-lower-roman { - list-style-type: lower-roman; } - html.theme--documenter-dark .content ol:not([type]).is-upper-alpha { - list-style-type: upper-alpha; } - html.theme--documenter-dark .content ol:not([type]).is-upper-roman { - list-style-type: upper-roman; } - html.theme--documenter-dark .content ul { - list-style: disc outside; - margin-left: 2em; - margin-top: 1em; } - html.theme--documenter-dark .content ul ul { - list-style-type: circle; - margin-top: 0.5em; } - html.theme--documenter-dark .content ul ul ul { - list-style-type: square; } - html.theme--documenter-dark .content dd { - margin-left: 2em; } - html.theme--documenter-dark .content figure { - margin-left: 2em; - margin-right: 2em; - text-align: center; } - html.theme--documenter-dark .content figure:not(:first-child) { - margin-top: 2em; } - html.theme--documenter-dark .content figure:not(:last-child) { - margin-bottom: 2em; } - html.theme--documenter-dark .content figure img { - display: inline-block; } - html.theme--documenter-dark .content figure figcaption { - font-style: italic; } - html.theme--documenter-dark .content pre { - -webkit-overflow-scrolling: touch; - overflow-x: auto; - padding: 0.7rem 0.5rem; - white-space: pre; - word-wrap: normal; } - html.theme--documenter-dark .content sup, - html.theme--documenter-dark .content sub { - font-size: 75%; } - html.theme--documenter-dark .content table { - width: 100%; } - html.theme--documenter-dark .content table td, - html.theme--documenter-dark .content table th { - border: 1px solid #5e6d6f; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - html.theme--documenter-dark .content table th { - color: #f2f2f2; } - html.theme--documenter-dark .content table th:not([align]) { - text-align: left; } - html.theme--documenter-dark .content table thead td, - html.theme--documenter-dark .content table thead th { - border-width: 0 0 2px; - color: #f2f2f2; } - html.theme--documenter-dark .content table tfoot td, - html.theme--documenter-dark .content table tfoot th { - border-width: 2px 0 0; - color: #f2f2f2; } - html.theme--documenter-dark .content table tbody tr:last-child td, - html.theme--documenter-dark .content table tbody tr:last-child th { - border-bottom-width: 0; } - html.theme--documenter-dark .content .tabs li + li { - margin-top: 0; } - html.theme--documenter-dark .content.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.content { - font-size: 0.85em; } - html.theme--documenter-dark .content.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .content.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .icon { - align-items: center; - display: inline-flex; - justify-content: center; - height: 1.5rem; - width: 1.5rem; } - html.theme--documenter-dark .icon.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.icon { - height: 1rem; - width: 1rem; } - html.theme--documenter-dark .icon.is-medium { - height: 2rem; - width: 2rem; } - html.theme--documenter-dark .icon.is-large { - height: 3rem; - width: 3rem; } - html.theme--documenter-dark .image, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { - display: block; - position: relative; } - html.theme--documenter-dark .image img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img { - display: block; - height: auto; - width: 100%; } - html.theme--documenter-dark .image img.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img.is-rounded { - border-radius: 290486px; } - html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, - html.theme--documenter-dark .image.is-square .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, - html.theme--documenter-dark .image.is-1by1 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, - html.theme--documenter-dark .image.is-5by4 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, - html.theme--documenter-dark .image.is-4by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, - html.theme--documenter-dark .image.is-3by2 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, - html.theme--documenter-dark .image.is-5by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, - html.theme--documenter-dark .image.is-16by9 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, - html.theme--documenter-dark .image.is-2by1 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, - html.theme--documenter-dark .image.is-3by1 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, - html.theme--documenter-dark .image.is-4by5 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, - html.theme--documenter-dark .image.is-3by4 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, - html.theme--documenter-dark .image.is-2by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, - html.theme--documenter-dark .image.is-3by5 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, - html.theme--documenter-dark .image.is-9by16 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, - html.theme--documenter-dark .image.is-1by2 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, - html.theme--documenter-dark .image.is-1by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { - height: 100%; - width: 100%; } - html.theme--documenter-dark .image.is-square, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square, html.theme--documenter-dark .image.is-1by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 { - padding-top: 100%; } - html.theme--documenter-dark .image.is-5by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 { - padding-top: 80%; } - html.theme--documenter-dark .image.is-4by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 { - padding-top: 75%; } - html.theme--documenter-dark .image.is-3by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 { - padding-top: 66.6666%; } - html.theme--documenter-dark .image.is-5by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 { - padding-top: 60%; } - html.theme--documenter-dark .image.is-16by9, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 { - padding-top: 56.25%; } - html.theme--documenter-dark .image.is-2by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 { - padding-top: 50%; } - html.theme--documenter-dark .image.is-3by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 { - padding-top: 33.3333%; } - html.theme--documenter-dark .image.is-4by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 { - padding-top: 125%; } - html.theme--documenter-dark .image.is-3by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 { - padding-top: 133.3333%; } - html.theme--documenter-dark .image.is-2by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 { - padding-top: 150%; } - html.theme--documenter-dark .image.is-3by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 { - padding-top: 166.6666%; } - html.theme--documenter-dark .image.is-9by16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 { - padding-top: 177.7777%; } - html.theme--documenter-dark .image.is-1by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 { - padding-top: 200%; } - html.theme--documenter-dark .image.is-1by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 { - padding-top: 300%; } - html.theme--documenter-dark .image.is-16x16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16x16 { - height: 16px; - width: 16px; } - html.theme--documenter-dark .image.is-24x24, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-24x24 { - height: 24px; - width: 24px; } - html.theme--documenter-dark .image.is-32x32, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-32x32 { - height: 32px; - width: 32px; } - html.theme--documenter-dark .image.is-48x48, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-48x48 { - height: 48px; - width: 48px; } - html.theme--documenter-dark .image.is-64x64, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-64x64 { - height: 64px; - width: 64px; } - html.theme--documenter-dark .image.is-96x96, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-96x96 { - height: 96px; - width: 96px; } - html.theme--documenter-dark .image.is-128x128, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-128x128 { - height: 128px; - width: 128px; } - html.theme--documenter-dark .notification { - background-color: #282f2f; - border-radius: 0.4em; - padding: 1.25rem 2.5rem 1.25rem 1.5rem; - position: relative; } - html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - html.theme--documenter-dark .notification strong { - color: currentColor; } - html.theme--documenter-dark .notification code, - html.theme--documenter-dark .notification pre { - background: white; } - html.theme--documenter-dark .notification pre code { - background: transparent; } - html.theme--documenter-dark .notification > .delete { - position: absolute; - right: 0.5rem; - top: 0.5rem; } - html.theme--documenter-dark .notification .title, - html.theme--documenter-dark .notification .subtitle, - html.theme--documenter-dark .notification .content { - color: currentColor; } - html.theme--documenter-dark .notification.is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .notification.is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .notification.is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .notification.is-dark, html.theme--documenter-dark .content kbd.notification { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .notification.is-primary, html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .notification.is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .notification.is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .notification.is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .notification.is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .notification.is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .progress { - -moz-appearance: none; - -webkit-appearance: none; - border: none; - border-radius: 290486px; - display: block; - height: 15px; - overflow: hidden; - padding: 0; - width: 100%; } - html.theme--documenter-dark .progress::-webkit-progress-bar { - background-color: #5e6d6f; } - html.theme--documenter-dark .progress::-webkit-progress-value { - background-color: #dbdee0; } - html.theme--documenter-dark .progress::-moz-progress-bar { - background-color: #dbdee0; } - html.theme--documenter-dark .progress::-ms-fill { - background-color: #dbdee0; - border: none; } - html.theme--documenter-dark .progress.is-white::-webkit-progress-value { - background-color: white; } - html.theme--documenter-dark .progress.is-white::-moz-progress-bar { - background-color: white; } - html.theme--documenter-dark .progress.is-white::-ms-fill { - background-color: white; } - html.theme--documenter-dark .progress.is-white:indeterminate { - background-image: linear-gradient(to right, white 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-black::-webkit-progress-value { - background-color: #0a0a0a; } - html.theme--documenter-dark .progress.is-black::-moz-progress-bar { - background-color: #0a0a0a; } - html.theme--documenter-dark .progress.is-black::-ms-fill { - background-color: #0a0a0a; } - html.theme--documenter-dark .progress.is-black:indeterminate { - background-image: linear-gradient(to right, #0a0a0a 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-light::-webkit-progress-value { - background-color: #ecf0f1; } - html.theme--documenter-dark .progress.is-light::-moz-progress-bar { - background-color: #ecf0f1; } - html.theme--documenter-dark .progress.is-light::-ms-fill { - background-color: #ecf0f1; } - html.theme--documenter-dark .progress.is-light:indeterminate { - background-image: linear-gradient(to right, #ecf0f1 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-dark::-webkit-progress-value, html.theme--documenter-dark .content kbd.progress::-webkit-progress-value { - background-color: #282f2f; } - html.theme--documenter-dark .progress.is-dark::-moz-progress-bar, html.theme--documenter-dark .content kbd.progress::-moz-progress-bar { - background-color: #282f2f; } - html.theme--documenter-dark .progress.is-dark::-ms-fill, html.theme--documenter-dark .content kbd.progress::-ms-fill { - background-color: #282f2f; } - html.theme--documenter-dark .progress.is-dark:indeterminate, html.theme--documenter-dark .content kbd.progress:indeterminate { - background-image: linear-gradient(to right, #282f2f 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-primary::-webkit-progress-value, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { - background-color: #375a7f; } - html.theme--documenter-dark .progress.is-primary::-moz-progress-bar, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { - background-color: #375a7f; } - html.theme--documenter-dark .progress.is-primary::-ms-fill, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-ms-fill { - background-color: #375a7f; } - html.theme--documenter-dark .progress.is-primary:indeterminate, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink:indeterminate { - background-image: linear-gradient(to right, #375a7f 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-link::-webkit-progress-value { - background-color: #1abc9c; } - html.theme--documenter-dark .progress.is-link::-moz-progress-bar { - background-color: #1abc9c; } - html.theme--documenter-dark .progress.is-link::-ms-fill { - background-color: #1abc9c; } - html.theme--documenter-dark .progress.is-link:indeterminate { - background-image: linear-gradient(to right, #1abc9c 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-info::-webkit-progress-value { - background-color: #024c7d; } - html.theme--documenter-dark .progress.is-info::-moz-progress-bar { - background-color: #024c7d; } - html.theme--documenter-dark .progress.is-info::-ms-fill { - background-color: #024c7d; } - html.theme--documenter-dark .progress.is-info:indeterminate { - background-image: linear-gradient(to right, #024c7d 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-success::-webkit-progress-value { - background-color: #008438; } - html.theme--documenter-dark .progress.is-success::-moz-progress-bar { - background-color: #008438; } - html.theme--documenter-dark .progress.is-success::-ms-fill { - background-color: #008438; } - html.theme--documenter-dark .progress.is-success:indeterminate { - background-image: linear-gradient(to right, #008438 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-warning::-webkit-progress-value { - background-color: #ad8100; } - html.theme--documenter-dark .progress.is-warning::-moz-progress-bar { - background-color: #ad8100; } - html.theme--documenter-dark .progress.is-warning::-ms-fill { - background-color: #ad8100; } - html.theme--documenter-dark .progress.is-warning:indeterminate { - background-image: linear-gradient(to right, #ad8100 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-danger::-webkit-progress-value { - background-color: #9e1b0d; } - html.theme--documenter-dark .progress.is-danger::-moz-progress-bar { - background-color: #9e1b0d; } - html.theme--documenter-dark .progress.is-danger::-ms-fill { - background-color: #9e1b0d; } - html.theme--documenter-dark .progress.is-danger:indeterminate { - background-image: linear-gradient(to right, #9e1b0d 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress:indeterminate { - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-name: moveIndeterminate; - animation-timing-function: linear; - background-color: #5e6d6f; - background-image: linear-gradient(to right, #fff 30%, #5e6d6f 30%); - background-position: top left; - background-repeat: no-repeat; - background-size: 150% 150%; } - html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar { - background-color: transparent; } - html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar { - background-color: transparent; } - html.theme--documenter-dark .progress.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.progress { - height: 0.85em; } - html.theme--documenter-dark .progress.is-medium { - height: 1.25rem; } - html.theme--documenter-dark .progress.is-large { - height: 1.5rem; } - -@keyframes moveIndeterminate { - from { - background-position: 200% 0; } - to { - background-position: -200% 0; } } - html.theme--documenter-dark .table { - background-color: #343c3d; - color: #fff; } - html.theme--documenter-dark .table td, - html.theme--documenter-dark .table th { - border: 1px solid #5e6d6f; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - html.theme--documenter-dark .table td.is-white, - html.theme--documenter-dark .table th.is-white { - background-color: white; - border-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .table td.is-black, - html.theme--documenter-dark .table th.is-black { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .table td.is-light, - html.theme--documenter-dark .table th.is-light { - background-color: #ecf0f1; - border-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .table td.is-dark, - html.theme--documenter-dark .table th.is-dark { - background-color: #282f2f; - border-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .table td.is-primary, - html.theme--documenter-dark .table th.is-primary { - background-color: #375a7f; - border-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .table td.is-link, - html.theme--documenter-dark .table th.is-link { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .table td.is-info, - html.theme--documenter-dark .table th.is-info { - background-color: #024c7d; - border-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .table td.is-success, - html.theme--documenter-dark .table th.is-success { - background-color: #008438; - border-color: #008438; - color: #fff; } - html.theme--documenter-dark .table td.is-warning, - html.theme--documenter-dark .table th.is-warning { - background-color: #ad8100; - border-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .table td.is-danger, - html.theme--documenter-dark .table th.is-danger { - background-color: #9e1b0d; - border-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .table td.is-narrow, - html.theme--documenter-dark .table th.is-narrow { - white-space: nowrap; - width: 1%; } - html.theme--documenter-dark .table td.is-selected, - html.theme--documenter-dark .table th.is-selected { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .table td.is-selected a, - html.theme--documenter-dark .table td.is-selected strong, - html.theme--documenter-dark .table th.is-selected a, - html.theme--documenter-dark .table th.is-selected strong { - color: currentColor; } - html.theme--documenter-dark .table th { - color: #f2f2f2; } - html.theme--documenter-dark .table th:not([align]) { - text-align: left; } - html.theme--documenter-dark .table tr.is-selected { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .table tr.is-selected a, - html.theme--documenter-dark .table tr.is-selected strong { - color: currentColor; } - html.theme--documenter-dark .table tr.is-selected td, - html.theme--documenter-dark .table tr.is-selected th { - border-color: #fff; - color: currentColor; } - html.theme--documenter-dark .table thead { - background-color: transparent; } - html.theme--documenter-dark .table thead td, - html.theme--documenter-dark .table thead th { - border-width: 0 0 2px; - color: #f2f2f2; } - html.theme--documenter-dark .table tfoot { - background-color: transparent; } - html.theme--documenter-dark .table tfoot td, - html.theme--documenter-dark .table tfoot th { - border-width: 2px 0 0; - color: #f2f2f2; } - html.theme--documenter-dark .table tbody { - background-color: transparent; } - html.theme--documenter-dark .table tbody tr:last-child td, - html.theme--documenter-dark .table tbody tr:last-child th { - border-bottom-width: 0; } - html.theme--documenter-dark .table.is-bordered td, - html.theme--documenter-dark .table.is-bordered th { - border-width: 1px; } - html.theme--documenter-dark .table.is-bordered tr:last-child td, - html.theme--documenter-dark .table.is-bordered tr:last-child th { - border-bottom-width: 1px; } - html.theme--documenter-dark .table.is-fullwidth { - width: 100%; } - html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover { - background-color: #282f2f; } - html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { - background-color: #282f2f; } - html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { - background-color: #2d3435; } - html.theme--documenter-dark .table.is-narrow td, - html.theme--documenter-dark .table.is-narrow th { - padding: 0.25em 0.5em; } - html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even) { - background-color: #282f2f; } - html.theme--documenter-dark .table-container { - -webkit-overflow-scrolling: touch; - overflow: auto; - overflow-y: hidden; - max-width: 100%; } - html.theme--documenter-dark .tags { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - html.theme--documenter-dark .tags .tag, html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags .content kbd, html.theme--documenter-dark .content .tags kbd { - margin-bottom: 0.5rem; } - html.theme--documenter-dark .tags .tag:not(:last-child), html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags .content kbd:not(:last-child), html.theme--documenter-dark .content .tags kbd:not(:last-child) { - margin-right: 0.5rem; } - html.theme--documenter-dark .tags:last-child { - margin-bottom: -0.5rem; } - html.theme--documenter-dark .tags:not(:last-child) { - margin-bottom: 1rem; } - html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large), html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large) { - font-size: 15px; } - html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium), html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium) { - font-size: 1.25rem; } - html.theme--documenter-dark .tags.is-centered { - justify-content: center; } - html.theme--documenter-dark .tags.is-centered .tag, html.theme--documenter-dark .tags.is-centered .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags.is-centered .content kbd, html.theme--documenter-dark .content .tags.is-centered kbd { - margin-right: 0.25rem; - margin-left: 0.25rem; } - html.theme--documenter-dark .tags.is-right { - justify-content: flex-end; } - html.theme--documenter-dark .tags.is-right .tag:not(:first-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child) { - margin-left: 0.5rem; } - html.theme--documenter-dark .tags.is-right .tag:not(:last-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child) { - margin-right: 0; } - html.theme--documenter-dark .tags.has-addons .tag, html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags.has-addons .content kbd, html.theme--documenter-dark .content .tags.has-addons kbd { - margin-right: 0; } - html.theme--documenter-dark .tags.has-addons .tag:not(:first-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child) { - margin-left: 0; - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .tags.has-addons .tag:not(:last-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .tag:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body), html.theme--documenter-dark .content kbd:not(body) { - align-items: center; - background-color: #282f2f; - border-radius: 0.4em; - color: #fff; - display: inline-flex; - font-size: 0.85em; - height: 2em; - justify-content: center; - line-height: 1.5; - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - html.theme--documenter-dark .tag:not(body) .delete, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .delete, html.theme--documenter-dark .content kbd:not(body) .delete { - margin-left: 0.25rem; - margin-right: -0.375rem; } - html.theme--documenter-dark .tag:not(body).is-white, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-white, html.theme--documenter-dark .content kbd:not(body).is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .tag:not(body).is-black, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-black, html.theme--documenter-dark .content kbd:not(body).is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .tag:not(body).is-light, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-light, html.theme--documenter-dark .content kbd:not(body).is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .tag:not(body).is-dark, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-dark, html.theme--documenter-dark .content kbd:not(body) { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .tag:not(body).is-primary, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body), html.theme--documenter-dark .content kbd:not(body).is-primary { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-link, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-link, html.theme--documenter-dark .content kbd:not(body).is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-info, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-info, html.theme--documenter-dark .content kbd:not(body).is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-success, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-success, html.theme--documenter-dark .content kbd:not(body).is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-warning, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-warning, html.theme--documenter-dark .content kbd:not(body).is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-danger, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-danger, html.theme--documenter-dark .content kbd:not(body).is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-normal, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-normal, html.theme--documenter-dark .content kbd:not(body).is-normal { - font-size: 0.85em; } - html.theme--documenter-dark .tag:not(body).is-medium, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-medium, html.theme--documenter-dark .content kbd:not(body).is-medium { - font-size: 15px; } - html.theme--documenter-dark .tag:not(body).is-large, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-large, html.theme--documenter-dark .content kbd:not(body).is-large { - font-size: 1.25rem; } - html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child) { - margin-left: -0.375em; - margin-right: 0.1875em; } - html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: -0.375em; } - html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child, html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child { - margin-left: -0.375em; - margin-right: -0.375em; } - html.theme--documenter-dark .tag:not(body).is-delete, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete, html.theme--documenter-dark .content kbd:not(body).is-delete { - margin-left: 1px; - padding: 0; - position: relative; - width: 2em; } - html.theme--documenter-dark .tag:not(body).is-delete::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::before, html.theme--documenter-dark .content kbd:not(body).is-delete::before, html.theme--documenter-dark .tag:not(body).is-delete::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::after, html.theme--documenter-dark .content kbd:not(body).is-delete::after { - background-color: currentColor; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - html.theme--documenter-dark .tag:not(body).is-delete::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::before, html.theme--documenter-dark .content kbd:not(body).is-delete::before { - height: 1px; - width: 50%; } - html.theme--documenter-dark .tag:not(body).is-delete::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::after, html.theme--documenter-dark .content kbd:not(body).is-delete::after { - height: 50%; - width: 1px; } - html.theme--documenter-dark .tag:not(body).is-delete:hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:hover, html.theme--documenter-dark .content kbd:not(body).is-delete:hover, html.theme--documenter-dark .tag:not(body).is-delete:focus, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:focus, html.theme--documenter-dark .content kbd:not(body).is-delete:focus { - background-color: #1d2122; } - html.theme--documenter-dark .tag:not(body).is-delete:active, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:active, html.theme--documenter-dark .content kbd:not(body).is-delete:active { - background-color: #111414; } - html.theme--documenter-dark .tag:not(body).is-rounded, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-rounded, html.theme--documenter-dark .content kbd:not(body).is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.tag:not(body) { - border-radius: 290486px; } - html.theme--documenter-dark a.tag:hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:hover { - text-decoration: underline; } - html.theme--documenter-dark .title, - html.theme--documenter-dark .subtitle { - word-break: break-word; } - html.theme--documenter-dark .title em, - html.theme--documenter-dark .title span, - html.theme--documenter-dark .subtitle em, - html.theme--documenter-dark .subtitle span { - font-weight: inherit; } - html.theme--documenter-dark .title sub, - html.theme--documenter-dark .subtitle sub { - font-size: 0.75em; } - html.theme--documenter-dark .title sup, - html.theme--documenter-dark .subtitle sup { - font-size: 0.75em; } - html.theme--documenter-dark .title .tag, html.theme--documenter-dark .title .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .title .content kbd, html.theme--documenter-dark .content .title kbd, - html.theme--documenter-dark .subtitle .tag, - html.theme--documenter-dark .subtitle .docstring > section > a.docs-sourcelink, - html.theme--documenter-dark .subtitle .content kbd, - html.theme--documenter-dark .content .subtitle kbd { - vertical-align: middle; } - html.theme--documenter-dark .title { - color: #fff; - font-size: 2rem; - font-weight: 500; - line-height: 1.125; } - html.theme--documenter-dark .title strong { - color: inherit; - font-weight: inherit; } - html.theme--documenter-dark .title + .highlight { - margin-top: -0.75rem; } - html.theme--documenter-dark .title:not(.is-spaced) + .subtitle { - margin-top: -1.25rem; } - html.theme--documenter-dark .title.is-1 { - font-size: 3rem; } - html.theme--documenter-dark .title.is-2 { - font-size: 2.5rem; } - html.theme--documenter-dark .title.is-3 { - font-size: 2rem; } - html.theme--documenter-dark .title.is-4 { - font-size: 1.5rem; } - html.theme--documenter-dark .title.is-5 { - font-size: 1.25rem; } - html.theme--documenter-dark .title.is-6 { - font-size: 15px; } - html.theme--documenter-dark .title.is-7 { - font-size: 0.85em; } - html.theme--documenter-dark .subtitle { - color: #8c9b9d; - font-size: 1.25rem; - font-weight: 400; - line-height: 1.25; } - html.theme--documenter-dark .subtitle strong { - color: #8c9b9d; - font-weight: 600; } - html.theme--documenter-dark .subtitle:not(.is-spaced) + .title { - margin-top: -1.25rem; } - html.theme--documenter-dark .subtitle.is-1 { - font-size: 3rem; } - html.theme--documenter-dark .subtitle.is-2 { - font-size: 2.5rem; } - html.theme--documenter-dark .subtitle.is-3 { - font-size: 2rem; } - html.theme--documenter-dark .subtitle.is-4 { - font-size: 1.5rem; } - html.theme--documenter-dark .subtitle.is-5 { - font-size: 1.25rem; } - html.theme--documenter-dark .subtitle.is-6 { - font-size: 15px; } - html.theme--documenter-dark .subtitle.is-7 { - font-size: 0.85em; } - html.theme--documenter-dark .heading { - display: block; - font-size: 11px; - letter-spacing: 1px; - margin-bottom: 5px; - text-transform: uppercase; } - html.theme--documenter-dark .highlight { - font-weight: 400; - max-width: 100%; - overflow: hidden; - padding: 0; } - html.theme--documenter-dark .highlight pre { - overflow: auto; - max-width: 100%; } - html.theme--documenter-dark .number { - align-items: center; - background-color: #282f2f; - border-radius: 290486px; - display: inline-flex; - font-size: 1.25rem; - height: 2em; - justify-content: center; - margin-right: 1.5rem; - min-width: 2.5em; - padding: 0.25rem 0.5rem; - text-align: center; - vertical-align: top; } - html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea, html.theme--documenter-dark .select select { - background-color: #1f2424; - border-color: #5e6d6f; - border-radius: 0.4em; - color: #dbdee0; } - html.theme--documenter-dark .input::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, html.theme--documenter-dark .textarea::-moz-placeholder, html.theme--documenter-dark .select select::-moz-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, html.theme--documenter-dark .textarea::-webkit-input-placeholder, html.theme--documenter-dark .select select::-webkit-input-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, html.theme--documenter-dark .textarea:-moz-placeholder, html.theme--documenter-dark .select select:-moz-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, html.theme--documenter-dark .textarea:-ms-input-placeholder, html.theme--documenter-dark .select select:-ms-input-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input:hover, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:hover, html.theme--documenter-dark .textarea:hover, html.theme--documenter-dark .select select:hover, html.theme--documenter-dark .is-hovered.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-hovered, html.theme--documenter-dark .is-hovered.textarea, html.theme--documenter-dark .select select.is-hovered { - border-color: #8c9b9d; } - html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .select select.is-active { - border-color: #1abc9c; - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .select select[disabled], - fieldset[disabled] html.theme--documenter-dark .input, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - fieldset[disabled] html.theme--documenter-dark .textarea, - fieldset[disabled] html.theme--documenter-dark .select select { - background-color: #8c9b9d; - border-color: #282f2f; - box-shadow: none; - color: white; } - html.theme--documenter-dark .input[disabled]::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, html.theme--documenter-dark .textarea[disabled]::-moz-placeholder, html.theme--documenter-dark .select select[disabled]::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input[disabled]:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, html.theme--documenter-dark .textarea[disabled]:-moz-placeholder, html.theme--documenter-dark .select select[disabled]:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input[disabled]:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder, html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - max-width: 100%; - width: 100%; } - html.theme--documenter-dark .input[readonly], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[readonly], html.theme--documenter-dark .textarea[readonly] { - box-shadow: none; } - html.theme--documenter-dark .is-white.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white, html.theme--documenter-dark .is-white.textarea { - border-color: white; } - html.theme--documenter-dark .is-white.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:focus, html.theme--documenter-dark .is-white.textarea:focus, html.theme--documenter-dark .is-white.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white.is-focused, html.theme--documenter-dark .is-white.is-focused.textarea, html.theme--documenter-dark .is-white.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:active, html.theme--documenter-dark .is-white.textarea:active, html.theme--documenter-dark .is-white.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white.is-active, html.theme--documenter-dark .is-white.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - html.theme--documenter-dark .is-black.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black, html.theme--documenter-dark .is-black.textarea { - border-color: #0a0a0a; } - html.theme--documenter-dark .is-black.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:focus, html.theme--documenter-dark .is-black.textarea:focus, html.theme--documenter-dark .is-black.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black.is-focused, html.theme--documenter-dark .is-black.is-focused.textarea, html.theme--documenter-dark .is-black.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:active, html.theme--documenter-dark .is-black.textarea:active, html.theme--documenter-dark .is-black.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black.is-active, html.theme--documenter-dark .is-black.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - html.theme--documenter-dark .is-light.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light, html.theme--documenter-dark .is-light.textarea { - border-color: #ecf0f1; } - html.theme--documenter-dark .is-light.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:focus, html.theme--documenter-dark .is-light.textarea:focus, html.theme--documenter-dark .is-light.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light.is-focused, html.theme--documenter-dark .is-light.is-focused.textarea, html.theme--documenter-dark .is-light.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:active, html.theme--documenter-dark .is-light.textarea:active, html.theme--documenter-dark .is-light.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light.is-active, html.theme--documenter-dark .is-light.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } - html.theme--documenter-dark .is-dark.input, html.theme--documenter-dark .content kbd.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark, html.theme--documenter-dark .is-dark.textarea, html.theme--documenter-dark .content kbd.textarea { - border-color: #282f2f; } - html.theme--documenter-dark .is-dark.input:focus, html.theme--documenter-dark .content kbd.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:focus, html.theme--documenter-dark .is-dark.textarea:focus, html.theme--documenter-dark .content kbd.textarea:focus, html.theme--documenter-dark .is-dark.is-focused.input, html.theme--documenter-dark .content kbd.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark.is-focused, html.theme--documenter-dark .is-dark.is-focused.textarea, html.theme--documenter-dark .content kbd.is-focused.textarea, html.theme--documenter-dark .is-dark.input:active, html.theme--documenter-dark .content kbd.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:active, html.theme--documenter-dark .is-dark.textarea:active, html.theme--documenter-dark .content kbd.textarea:active, html.theme--documenter-dark .is-dark.is-active.input, html.theme--documenter-dark .content kbd.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark.is-active, html.theme--documenter-dark .is-dark.is-active.textarea, html.theme--documenter-dark .content kbd.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } - html.theme--documenter-dark .is-primary.input, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary, html.theme--documenter-dark .is-primary.textarea, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink { - border-color: #375a7f; } - html.theme--documenter-dark .is-primary.input:focus, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:focus, html.theme--documenter-dark .is-primary.textarea:focus, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:focus, html.theme--documenter-dark .is-primary.is-focused.input, html.theme--documenter-dark .docstring > section > a.is-focused.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary.is-focused, html.theme--documenter-dark .is-primary.is-focused.textarea, html.theme--documenter-dark .docstring > section > a.is-focused.textarea.docs-sourcelink, html.theme--documenter-dark .is-primary.input:active, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:active, html.theme--documenter-dark .is-primary.textarea:active, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:active, html.theme--documenter-dark .is-primary.is-active.input, html.theme--documenter-dark .docstring > section > a.is-active.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary.is-active, html.theme--documenter-dark .is-primary.is-active.textarea, html.theme--documenter-dark .docstring > section > a.is-active.textarea.docs-sourcelink { - box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } - html.theme--documenter-dark .is-link.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link, html.theme--documenter-dark .is-link.textarea { - border-color: #1abc9c; } - html.theme--documenter-dark .is-link.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:focus, html.theme--documenter-dark .is-link.textarea:focus, html.theme--documenter-dark .is-link.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link.is-focused, html.theme--documenter-dark .is-link.is-focused.textarea, html.theme--documenter-dark .is-link.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:active, html.theme--documenter-dark .is-link.textarea:active, html.theme--documenter-dark .is-link.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link.is-active, html.theme--documenter-dark .is-link.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .is-info.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info, html.theme--documenter-dark .is-info.textarea { - border-color: #024c7d; } - html.theme--documenter-dark .is-info.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:focus, html.theme--documenter-dark .is-info.textarea:focus, html.theme--documenter-dark .is-info.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info.is-focused, html.theme--documenter-dark .is-info.is-focused.textarea, html.theme--documenter-dark .is-info.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:active, html.theme--documenter-dark .is-info.textarea:active, html.theme--documenter-dark .is-info.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info.is-active, html.theme--documenter-dark .is-info.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } - html.theme--documenter-dark .is-success.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success, html.theme--documenter-dark .is-success.textarea { - border-color: #008438; } - html.theme--documenter-dark .is-success.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:focus, html.theme--documenter-dark .is-success.textarea:focus, html.theme--documenter-dark .is-success.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success.is-focused, html.theme--documenter-dark .is-success.is-focused.textarea, html.theme--documenter-dark .is-success.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:active, html.theme--documenter-dark .is-success.textarea:active, html.theme--documenter-dark .is-success.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success.is-active, html.theme--documenter-dark .is-success.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } - html.theme--documenter-dark .is-warning.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning, html.theme--documenter-dark .is-warning.textarea { - border-color: #ad8100; } - html.theme--documenter-dark .is-warning.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:focus, html.theme--documenter-dark .is-warning.textarea:focus, html.theme--documenter-dark .is-warning.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning.is-focused, html.theme--documenter-dark .is-warning.is-focused.textarea, html.theme--documenter-dark .is-warning.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:active, html.theme--documenter-dark .is-warning.textarea:active, html.theme--documenter-dark .is-warning.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning.is-active, html.theme--documenter-dark .is-warning.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } - html.theme--documenter-dark .is-danger.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger, html.theme--documenter-dark .is-danger.textarea { - border-color: #9e1b0d; } - html.theme--documenter-dark .is-danger.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:focus, html.theme--documenter-dark .is-danger.textarea:focus, html.theme--documenter-dark .is-danger.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger.is-focused, html.theme--documenter-dark .is-danger.is-focused.textarea, html.theme--documenter-dark .is-danger.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:active, html.theme--documenter-dark .is-danger.textarea:active, html.theme--documenter-dark .is-danger.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger.is-active, html.theme--documenter-dark .is-danger.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } - html.theme--documenter-dark .is-small.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .is-small.textarea { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .is-medium.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-medium, html.theme--documenter-dark .is-medium.textarea { - font-size: 1.25rem; } - html.theme--documenter-dark .is-large.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-large, html.theme--documenter-dark .is-large.textarea { - font-size: 1.5rem; } - html.theme--documenter-dark .is-fullwidth.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-fullwidth, html.theme--documenter-dark .is-fullwidth.textarea { - display: block; - width: 100%; } - html.theme--documenter-dark .is-inline.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-inline, html.theme--documenter-dark .is-inline.textarea { - display: inline; - width: auto; } - html.theme--documenter-dark .input.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - html.theme--documenter-dark .input.is-static, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-static { - background-color: transparent; - border-color: transparent; - box-shadow: none; - padding-left: 0; - padding-right: 0; } - html.theme--documenter-dark .textarea { - display: block; - max-width: 100%; - min-width: 100%; - padding: 0.625em; - resize: vertical; } - html.theme--documenter-dark .textarea:not([rows]) { - max-height: 600px; - min-height: 120px; } - html.theme--documenter-dark .textarea[rows] { - height: initial; } - html.theme--documenter-dark .textarea.has-fixed-size { - resize: none; } - html.theme--documenter-dark .checkbox, html.theme--documenter-dark .radio { - cursor: pointer; - display: inline-block; - line-height: 1.25; - position: relative; } - html.theme--documenter-dark .checkbox input, html.theme--documenter-dark .radio input { - cursor: pointer; } - html.theme--documenter-dark .checkbox:hover, html.theme--documenter-dark .radio:hover { - color: #8c9b9d; } - html.theme--documenter-dark .checkbox[disabled], html.theme--documenter-dark .radio[disabled], - fieldset[disabled] html.theme--documenter-dark .checkbox, - fieldset[disabled] html.theme--documenter-dark .radio { - color: white; - cursor: not-allowed; } - html.theme--documenter-dark .radio + .radio { - margin-left: 0.5em; } - html.theme--documenter-dark .select { - display: inline-block; - max-width: 100%; - position: relative; - vertical-align: top; } - html.theme--documenter-dark .select:not(.is-multiple) { - height: 2.25em; } - html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after { - border-color: #1abc9c; - right: 1.125em; - z-index: 4; } - html.theme--documenter-dark .select.is-rounded select, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select select { - border-radius: 290486px; - padding-left: 1em; } - html.theme--documenter-dark .select select { - cursor: pointer; - display: block; - font-size: 1em; - max-width: 100%; - outline: none; } - html.theme--documenter-dark .select select::-ms-expand { - display: none; } - html.theme--documenter-dark .select select[disabled]:hover, - fieldset[disabled] html.theme--documenter-dark .select select:hover { - border-color: #282f2f; } - html.theme--documenter-dark .select select:not([multiple]) { - padding-right: 2.5em; } - html.theme--documenter-dark .select select[multiple] { - height: auto; - padding: 0; } - html.theme--documenter-dark .select select[multiple] option { - padding: 0.5em 1em; } - html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after { - border-color: #8c9b9d; } - html.theme--documenter-dark .select.is-white:not(:hover)::after { - border-color: white; } - html.theme--documenter-dark .select.is-white select { - border-color: white; } - html.theme--documenter-dark .select.is-white select:hover, html.theme--documenter-dark .select.is-white select.is-hovered { - border-color: #f2f2f2; } - html.theme--documenter-dark .select.is-white select:focus, html.theme--documenter-dark .select.is-white select.is-focused, html.theme--documenter-dark .select.is-white select:active, html.theme--documenter-dark .select.is-white select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - html.theme--documenter-dark .select.is-black:not(:hover)::after { - border-color: #0a0a0a; } - html.theme--documenter-dark .select.is-black select { - border-color: #0a0a0a; } - html.theme--documenter-dark .select.is-black select:hover, html.theme--documenter-dark .select.is-black select.is-hovered { - border-color: black; } - html.theme--documenter-dark .select.is-black select:focus, html.theme--documenter-dark .select.is-black select.is-focused, html.theme--documenter-dark .select.is-black select:active, html.theme--documenter-dark .select.is-black select.is-active { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - html.theme--documenter-dark .select.is-light:not(:hover)::after { - border-color: #ecf0f1; } - html.theme--documenter-dark .select.is-light select { - border-color: #ecf0f1; } - html.theme--documenter-dark .select.is-light select:hover, html.theme--documenter-dark .select.is-light select.is-hovered { - border-color: #dde4e6; } - html.theme--documenter-dark .select.is-light select:focus, html.theme--documenter-dark .select.is-light select.is-focused, html.theme--documenter-dark .select.is-light select:active, html.theme--documenter-dark .select.is-light select.is-active { - box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } - html.theme--documenter-dark .select.is-dark:not(:hover)::after, html.theme--documenter-dark .content kbd.select:not(:hover)::after { - border-color: #282f2f; } - html.theme--documenter-dark .select.is-dark select, html.theme--documenter-dark .content kbd.select select { - border-color: #282f2f; } - html.theme--documenter-dark .select.is-dark select:hover, html.theme--documenter-dark .content kbd.select select:hover, html.theme--documenter-dark .select.is-dark select.is-hovered, html.theme--documenter-dark .content kbd.select select.is-hovered { - border-color: #1d2122; } - html.theme--documenter-dark .select.is-dark select:focus, html.theme--documenter-dark .content kbd.select select:focus, html.theme--documenter-dark .select.is-dark select.is-focused, html.theme--documenter-dark .content kbd.select select.is-focused, html.theme--documenter-dark .select.is-dark select:active, html.theme--documenter-dark .content kbd.select select:active, html.theme--documenter-dark .select.is-dark select.is-active, html.theme--documenter-dark .content kbd.select select.is-active { - box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } - html.theme--documenter-dark .select.is-primary:not(:hover)::after, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink:not(:hover)::after { - border-color: #375a7f; } - html.theme--documenter-dark .select.is-primary select, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select { - border-color: #375a7f; } - html.theme--documenter-dark .select.is-primary select:hover, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:hover, html.theme--documenter-dark .select.is-primary select.is-hovered, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-hovered { - border-color: #2f4d6d; } - html.theme--documenter-dark .select.is-primary select:focus, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:focus, html.theme--documenter-dark .select.is-primary select.is-focused, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-focused, html.theme--documenter-dark .select.is-primary select:active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:active, html.theme--documenter-dark .select.is-primary select.is-active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-active { - box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } - html.theme--documenter-dark .select.is-link:not(:hover)::after { - border-color: #1abc9c; } - html.theme--documenter-dark .select.is-link select { - border-color: #1abc9c; } - html.theme--documenter-dark .select.is-link select:hover, html.theme--documenter-dark .select.is-link select.is-hovered { - border-color: #17a689; } - html.theme--documenter-dark .select.is-link select:focus, html.theme--documenter-dark .select.is-link select.is-focused, html.theme--documenter-dark .select.is-link select:active, html.theme--documenter-dark .select.is-link select.is-active { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .select.is-info:not(:hover)::after { - border-color: #024c7d; } - html.theme--documenter-dark .select.is-info select { - border-color: #024c7d; } - html.theme--documenter-dark .select.is-info select:hover, html.theme--documenter-dark .select.is-info select.is-hovered { - border-color: #023d64; } - html.theme--documenter-dark .select.is-info select:focus, html.theme--documenter-dark .select.is-info select.is-focused, html.theme--documenter-dark .select.is-info select:active, html.theme--documenter-dark .select.is-info select.is-active { - box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } - html.theme--documenter-dark .select.is-success:not(:hover)::after { - border-color: #008438; } - html.theme--documenter-dark .select.is-success select { - border-color: #008438; } - html.theme--documenter-dark .select.is-success select:hover, html.theme--documenter-dark .select.is-success select.is-hovered { - border-color: #006b2d; } - html.theme--documenter-dark .select.is-success select:focus, html.theme--documenter-dark .select.is-success select.is-focused, html.theme--documenter-dark .select.is-success select:active, html.theme--documenter-dark .select.is-success select.is-active { - box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } - html.theme--documenter-dark .select.is-warning:not(:hover)::after { - border-color: #ad8100; } - html.theme--documenter-dark .select.is-warning select { - border-color: #ad8100; } - html.theme--documenter-dark .select.is-warning select:hover, html.theme--documenter-dark .select.is-warning select.is-hovered { - border-color: #946e00; } - html.theme--documenter-dark .select.is-warning select:focus, html.theme--documenter-dark .select.is-warning select.is-focused, html.theme--documenter-dark .select.is-warning select:active, html.theme--documenter-dark .select.is-warning select.is-active { - box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } - html.theme--documenter-dark .select.is-danger:not(:hover)::after { - border-color: #9e1b0d; } - html.theme--documenter-dark .select.is-danger select { - border-color: #9e1b0d; } - html.theme--documenter-dark .select.is-danger select:hover, html.theme--documenter-dark .select.is-danger select.is-hovered { - border-color: #86170b; } - html.theme--documenter-dark .select.is-danger select:focus, html.theme--documenter-dark .select.is-danger select.is-focused, html.theme--documenter-dark .select.is-danger select:active, html.theme--documenter-dark .select.is-danger select.is-active { - box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } - html.theme--documenter-dark .select.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .select.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .select.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .select.is-disabled::after { - border-color: white; } - html.theme--documenter-dark .select.is-fullwidth { - width: 100%; } - html.theme--documenter-dark .select.is-fullwidth select { - width: 100%; } - html.theme--documenter-dark .select.is-loading::after { - margin-top: 0; - position: absolute; - right: 0.625em; - top: 0.625em; - transform: none; } - html.theme--documenter-dark .select.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select.is-loading:after { - font-size: 0.85em; } - html.theme--documenter-dark .select.is-loading.is-medium:after { - font-size: 1.25rem; } - html.theme--documenter-dark .select.is-loading.is-large:after { - font-size: 1.5rem; } - html.theme--documenter-dark .file { - align-items: stretch; - display: flex; - justify-content: flex-start; - position: relative; } - html.theme--documenter-dark .file.is-white .file-cta { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .file.is-white:hover .file-cta, html.theme--documenter-dark .file.is-white.is-hovered .file-cta { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .file.is-white:focus .file-cta, html.theme--documenter-dark .file.is-white.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); - color: #0a0a0a; } - html.theme--documenter-dark .file.is-white:active .file-cta, html.theme--documenter-dark .file.is-white.is-active .file-cta { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .file.is-black .file-cta { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - html.theme--documenter-dark .file.is-black:hover .file-cta, html.theme--documenter-dark .file.is-black.is-hovered .file-cta { - background-color: #040404; - border-color: transparent; - color: white; } - html.theme--documenter-dark .file.is-black:focus .file-cta, html.theme--documenter-dark .file.is-black.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); - color: white; } - html.theme--documenter-dark .file.is-black:active .file-cta, html.theme--documenter-dark .file.is-black.is-active .file-cta { - background-color: black; - border-color: transparent; - color: white; } - html.theme--documenter-dark .file.is-light .file-cta { - background-color: #ecf0f1; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .file.is-light:hover .file-cta, html.theme--documenter-dark .file.is-light.is-hovered .file-cta { - background-color: #e5eaec; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .file.is-light:focus .file-cta, html.theme--documenter-dark .file.is-light.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(236, 240, 241, 0.25); - color: #282f2f; } - html.theme--documenter-dark .file.is-light:active .file-cta, html.theme--documenter-dark .file.is-light.is-active .file-cta { - background-color: #dde4e6; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .file.is-dark .file-cta, html.theme--documenter-dark .content kbd.file .file-cta { - background-color: #282f2f; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .file.is-dark:hover .file-cta, html.theme--documenter-dark .content kbd.file:hover .file-cta, html.theme--documenter-dark .file.is-dark.is-hovered .file-cta, html.theme--documenter-dark .content kbd.file.is-hovered .file-cta { - background-color: #232829; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .file.is-dark:focus .file-cta, html.theme--documenter-dark .content kbd.file:focus .file-cta, html.theme--documenter-dark .file.is-dark.is-focused .file-cta, html.theme--documenter-dark .content kbd.file.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(40, 47, 47, 0.25); - color: #ecf0f1; } - html.theme--documenter-dark .file.is-dark:active .file-cta, html.theme--documenter-dark .content kbd.file:active .file-cta, html.theme--documenter-dark .file.is-dark.is-active .file-cta, html.theme--documenter-dark .content kbd.file.is-active .file-cta { - background-color: #1d2122; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .file.is-primary .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink .file-cta { - background-color: #375a7f; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-primary:hover .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:hover .file-cta, html.theme--documenter-dark .file.is-primary.is-hovered .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { - background-color: #335476; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-primary:focus .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:focus .file-cta, html.theme--documenter-dark .file.is-primary.is-focused .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(55, 90, 127, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-primary:active .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:active .file-cta, html.theme--documenter-dark .file.is-primary.is-active .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-active.docs-sourcelink .file-cta { - background-color: #2f4d6d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-link .file-cta { - background-color: #1abc9c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-link:hover .file-cta, html.theme--documenter-dark .file.is-link.is-hovered .file-cta { - background-color: #18b193; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-link:focus .file-cta, html.theme--documenter-dark .file.is-link.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(26, 188, 156, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-link:active .file-cta, html.theme--documenter-dark .file.is-link.is-active .file-cta { - background-color: #17a689; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-info .file-cta { - background-color: #024c7d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-info:hover .file-cta, html.theme--documenter-dark .file.is-info.is-hovered .file-cta { - background-color: #024470; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-info:focus .file-cta, html.theme--documenter-dark .file.is-info.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(2, 76, 125, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-info:active .file-cta, html.theme--documenter-dark .file.is-info.is-active .file-cta { - background-color: #023d64; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-success .file-cta { - background-color: #008438; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-success:hover .file-cta, html.theme--documenter-dark .file.is-success.is-hovered .file-cta { - background-color: #007733; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-success:focus .file-cta, html.theme--documenter-dark .file.is-success.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(0, 132, 56, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-success:active .file-cta, html.theme--documenter-dark .file.is-success.is-active .file-cta { - background-color: #006b2d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-warning .file-cta { - background-color: #ad8100; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-warning:hover .file-cta, html.theme--documenter-dark .file.is-warning.is-hovered .file-cta { - background-color: #a07700; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-warning:focus .file-cta, html.theme--documenter-dark .file.is-warning.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(173, 129, 0, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-warning:active .file-cta, html.theme--documenter-dark .file.is-warning.is-active .file-cta { - background-color: #946e00; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-danger .file-cta { - background-color: #9e1b0d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-danger:hover .file-cta, html.theme--documenter-dark .file.is-danger.is-hovered .file-cta { - background-color: #92190c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-danger:focus .file-cta, html.theme--documenter-dark .file.is-danger.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(158, 27, 13, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-danger:active .file-cta, html.theme--documenter-dark .file.is-danger.is-active .file-cta { - background-color: #86170b; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.file { - font-size: 0.85em; } - html.theme--documenter-dark .file.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .file.is-medium .file-icon .fa { - font-size: 21px; } - html.theme--documenter-dark .file.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .file.is-large .file-icon .fa { - font-size: 28px; } - html.theme--documenter-dark .file.has-name .file-cta { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .file.has-name .file-name { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .file.has-name.is-empty .file-cta { - border-radius: 0.4em; } - html.theme--documenter-dark .file.has-name.is-empty .file-name { - display: none; } - html.theme--documenter-dark .file.is-boxed .file-label { - flex-direction: column; } - html.theme--documenter-dark .file.is-boxed .file-cta { - flex-direction: column; - height: auto; - padding: 1em 3em; } - html.theme--documenter-dark .file.is-boxed .file-name { - border-width: 0 1px 1px; } - html.theme--documenter-dark .file.is-boxed .file-icon { - height: 1.5em; - width: 1.5em; } - html.theme--documenter-dark .file.is-boxed .file-icon .fa { - font-size: 21px; } - html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.file.is-boxed .file-icon .fa { - font-size: 14px; } - html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa { - font-size: 28px; } - html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa { - font-size: 35px; } - html.theme--documenter-dark .file.is-boxed.has-name .file-cta { - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .file.is-boxed.has-name .file-name { - border-radius: 0 0 0.4em 0.4em; - border-width: 0 1px 1px; } - html.theme--documenter-dark .file.is-centered { - justify-content: center; } - html.theme--documenter-dark .file.is-fullwidth .file-label { - width: 100%; } - html.theme--documenter-dark .file.is-fullwidth .file-name { - flex-grow: 1; - max-width: none; } - html.theme--documenter-dark .file.is-right { - justify-content: flex-end; } - html.theme--documenter-dark .file.is-right .file-cta { - border-radius: 0 0.4em 0.4em 0; } - html.theme--documenter-dark .file.is-right .file-name { - border-radius: 0.4em 0 0 0.4em; - border-width: 1px 0 1px 1px; - order: -1; } - html.theme--documenter-dark .file-label { - align-items: stretch; - display: flex; - cursor: pointer; - justify-content: flex-start; - overflow: hidden; - position: relative; } - html.theme--documenter-dark .file-label:hover .file-cta { - background-color: #e5eaec; - color: #282f2f; } - html.theme--documenter-dark .file-label:hover .file-name { - border-color: #596668; } - html.theme--documenter-dark .file-label:active .file-cta { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .file-label:active .file-name { - border-color: #535f61; } - html.theme--documenter-dark .file-input { - height: 100%; - left: 0; - opacity: 0; - outline: none; - position: absolute; - top: 0; - width: 100%; } - html.theme--documenter-dark .file-cta, - html.theme--documenter-dark .file-name { - border-color: #5e6d6f; - border-radius: 0.4em; - font-size: 1em; - padding-left: 1em; - padding-right: 1em; - white-space: nowrap; } - html.theme--documenter-dark .file-cta { - background-color: #ecf0f1; - color: #343c3d; } - html.theme--documenter-dark .file-name { - border-color: #5e6d6f; - border-style: solid; - border-width: 1px 1px 1px 0; - display: block; - max-width: 16em; - overflow: hidden; - text-align: left; - text-overflow: ellipsis; } - html.theme--documenter-dark .file-icon { - align-items: center; - display: flex; - height: 1em; - justify-content: center; - margin-right: 0.5em; - width: 1em; } - html.theme--documenter-dark .file-icon .fa { - font-size: 14px; } - html.theme--documenter-dark .label { - color: #282f2f; - display: block; - font-size: 15px; - font-weight: 700; } - html.theme--documenter-dark .label:not(:last-child) { - margin-bottom: 0.5em; } - html.theme--documenter-dark .label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.label { - font-size: 0.85em; } - html.theme--documenter-dark .label.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .label.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .help { - display: block; - font-size: 0.85em; - margin-top: 0.25rem; } - html.theme--documenter-dark .help.is-white { - color: white; } - html.theme--documenter-dark .help.is-black { - color: #0a0a0a; } - html.theme--documenter-dark .help.is-light { - color: #ecf0f1; } - html.theme--documenter-dark .help.is-dark, html.theme--documenter-dark .content kbd.help { - color: #282f2f; } - html.theme--documenter-dark .help.is-primary, html.theme--documenter-dark .docstring > section > a.help.docs-sourcelink { - color: #375a7f; } - html.theme--documenter-dark .help.is-link { - color: #1abc9c; } - html.theme--documenter-dark .help.is-info { - color: #024c7d; } - html.theme--documenter-dark .help.is-success { - color: #008438; } - html.theme--documenter-dark .help.is-warning { - color: #ad8100; } - html.theme--documenter-dark .help.is-danger { - color: #9e1b0d; } - html.theme--documenter-dark .field:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .field.has-addons { - display: flex; - justify-content: flex-start; } - html.theme--documenter-dark .field.has-addons .control:not(:last-child) { - margin-right: -1px; } - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button, - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input, - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select { - border-radius: 0; } - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button, - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input, - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button, - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input, - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-hovered, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-hovered, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-hovered, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-hovered, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-hovered { - z-index: 2; } - html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-focused, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-active, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-focused, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-active, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-focused, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-active { - z-index: 3; } - html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-focused:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-active:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-focused:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-active:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-focused:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-active:hover { - z-index: 4; } - html.theme--documenter-dark .field.has-addons .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .field.has-addons.has-addons-centered { - justify-content: center; } - html.theme--documenter-dark .field.has-addons.has-addons-right { - justify-content: flex-end; } - html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control { - flex-grow: 1; - flex-shrink: 0; } - html.theme--documenter-dark .field.is-grouped { - display: flex; - justify-content: flex-start; } - html.theme--documenter-dark .field.is-grouped > .control { - flex-shrink: 0; } - html.theme--documenter-dark .field.is-grouped > .control:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - html.theme--documenter-dark .field.is-grouped > .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .field.is-grouped.is-grouped-centered { - justify-content: center; } - html.theme--documenter-dark .field.is-grouped.is-grouped-right { - justify-content: flex-end; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline { - flex-wrap: wrap; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:last-child, html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child { - margin-bottom: -0.75rem; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child) { - margin-bottom: 0; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .field.is-horizontal { - display: flex; } } - html.theme--documenter-dark .field-label .label { - font-size: inherit; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .field-label { - margin-bottom: 0.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .field-label { - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - margin-right: 1.5rem; - text-align: right; } - html.theme--documenter-dark .field-label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.field-label { - font-size: 0.85em; - padding-top: 0.375em; } - html.theme--documenter-dark .field-label.is-normal { - padding-top: 0.375em; } - html.theme--documenter-dark .field-label.is-medium { - font-size: 1.25rem; - padding-top: 0.375em; } - html.theme--documenter-dark .field-label.is-large { - font-size: 1.5rem; - padding-top: 0.375em; } } - html.theme--documenter-dark .field-body .field .field { - margin-bottom: 0; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .field-body { - display: flex; - flex-basis: 0; - flex-grow: 5; - flex-shrink: 1; } - html.theme--documenter-dark .field-body .field { - margin-bottom: 0; } - html.theme--documenter-dark .field-body > .field { - flex-shrink: 1; } - html.theme--documenter-dark .field-body > .field:not(.is-narrow) { - flex-grow: 1; } - html.theme--documenter-dark .field-body > .field:not(:last-child) { - margin-right: 0.75rem; } } - html.theme--documenter-dark .control { - box-sizing: border-box; - clear: both; - font-size: 15px; - position: relative; - text-align: left; } - html.theme--documenter-dark .control.has-icons-left .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select:focus ~ .icon { - color: #5e6d6f; } - html.theme--documenter-dark .control.has-icons-left .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select.is-small ~ .icon, - html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.select ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select.is-small ~ .icon, - html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.select ~ .icon { - font-size: 0.85em; } - html.theme--documenter-dark .control.has-icons-left .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select.is-medium ~ .icon { - font-size: 1.25rem; } - html.theme--documenter-dark .control.has-icons-left .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select.is-large ~ .icon { - font-size: 1.5rem; } - html.theme--documenter-dark .control.has-icons-left .icon, html.theme--documenter-dark .control.has-icons-right .icon { - color: #dbdee0; - height: 2.25em; - pointer-events: none; - position: absolute; - top: 0; - width: 2.25em; - z-index: 4; } - html.theme--documenter-dark .control.has-icons-left .input, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, - html.theme--documenter-dark .control.has-icons-left .select select { - padding-left: 2.25em; } - html.theme--documenter-dark .control.has-icons-left .icon.is-left { - left: 0; } - html.theme--documenter-dark .control.has-icons-right .input, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, - html.theme--documenter-dark .control.has-icons-right .select select { - padding-right: 2.25em; } - html.theme--documenter-dark .control.has-icons-right .icon.is-right { - right: 0; } - html.theme--documenter-dark .control.is-loading::after { - position: absolute !important; - right: 0.625em; - top: 0.625em; - z-index: 4; } - html.theme--documenter-dark .control.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.control.is-loading:after { - font-size: 0.85em; } - html.theme--documenter-dark .control.is-loading.is-medium:after { - font-size: 1.25rem; } - html.theme--documenter-dark .control.is-loading.is-large:after { - font-size: 1.5rem; } - html.theme--documenter-dark .breadcrumb { - font-size: 15px; - white-space: nowrap; } - html.theme--documenter-dark .breadcrumb a { - align-items: center; - color: #1abc9c; - display: flex; - justify-content: center; - padding: 0 0.75em; } - html.theme--documenter-dark .breadcrumb a:hover { - color: #1dd2af; } - html.theme--documenter-dark .breadcrumb li { - align-items: center; - display: flex; } - html.theme--documenter-dark .breadcrumb li:first-child a { - padding-left: 0; } - html.theme--documenter-dark .breadcrumb li.is-active a { - color: #f2f2f2; - cursor: default; - pointer-events: none; } - html.theme--documenter-dark .breadcrumb li + li::before { - color: #8c9b9d; - content: "\0002f"; } - html.theme--documenter-dark .breadcrumb ul, - html.theme--documenter-dark .breadcrumb ol { - align-items: flex-start; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - html.theme--documenter-dark .breadcrumb .icon:first-child { - margin-right: 0.5em; } - html.theme--documenter-dark .breadcrumb .icon:last-child { - margin-left: 0.5em; } - html.theme--documenter-dark .breadcrumb.is-centered ol, - html.theme--documenter-dark .breadcrumb.is-centered ul { - justify-content: center; } - html.theme--documenter-dark .breadcrumb.is-right ol, - html.theme--documenter-dark .breadcrumb.is-right ul { - justify-content: flex-end; } - html.theme--documenter-dark .breadcrumb.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.breadcrumb { - font-size: 0.85em; } - html.theme--documenter-dark .breadcrumb.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .breadcrumb.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .breadcrumb.has-arrow-separator li + li::before { - content: "\02192"; } - html.theme--documenter-dark .breadcrumb.has-bullet-separator li + li::before { - content: "\02022"; } - html.theme--documenter-dark .breadcrumb.has-dot-separator li + li::before { - content: "\000b7"; } - html.theme--documenter-dark .breadcrumb.has-succeeds-separator li + li::before { - content: "\0227B"; } - html.theme--documenter-dark .card { - background-color: white; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - color: #fff; - max-width: 100%; - position: relative; } - html.theme--documenter-dark .card-header { - background-color: transparent; - align-items: stretch; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - display: flex; } - html.theme--documenter-dark .card-header-title { - align-items: center; - color: #f2f2f2; - display: flex; - flex-grow: 1; - font-weight: 700; - padding: 0.75rem; } - html.theme--documenter-dark .card-header-title.is-centered { - justify-content: center; } - html.theme--documenter-dark .card-header-icon { - align-items: center; - cursor: pointer; - display: flex; - justify-content: center; - padding: 0.75rem; } - html.theme--documenter-dark .card-image { - display: block; - position: relative; } - html.theme--documenter-dark .card-content { - background-color: transparent; - padding: 1rem 1.25rem; } - html.theme--documenter-dark .card-footer { - background-color: transparent; - border-top: 1px solid #5e6d6f; - align-items: stretch; - display: flex; } - html.theme--documenter-dark .card-footer-item { - align-items: center; - display: flex; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - justify-content: center; - padding: 0.75rem; } - html.theme--documenter-dark .card-footer-item:not(:last-child) { - border-right: 1px solid #5e6d6f; } - html.theme--documenter-dark .card .media:not(:last-child) { - margin-bottom: 1.5rem; } - html.theme--documenter-dark .dropdown { - display: inline-flex; - position: relative; - vertical-align: top; } - html.theme--documenter-dark .dropdown.is-active .dropdown-menu, html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu { - display: block; } - html.theme--documenter-dark .dropdown.is-right .dropdown-menu { - left: auto; - right: 0; } - html.theme--documenter-dark .dropdown.is-up .dropdown-menu { - bottom: 100%; - padding-bottom: 4px; - padding-top: initial; - top: auto; } - html.theme--documenter-dark .dropdown-menu { - display: none; - left: 0; - min-width: 12rem; - padding-top: 4px; - position: absolute; - top: 100%; - z-index: 20; } - html.theme--documenter-dark .dropdown-content { - background-color: #282f2f; - border-radius: 0.4em; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - html.theme--documenter-dark .dropdown-item { - color: #fff; - display: block; - font-size: 0.875rem; - line-height: 1.5; - padding: 0.375rem 1rem; - position: relative; } - html.theme--documenter-dark a.dropdown-item, - html.theme--documenter-dark button.dropdown-item { - padding-right: 3rem; - text-align: left; - white-space: nowrap; - width: 100%; } - html.theme--documenter-dark a.dropdown-item:hover, - html.theme--documenter-dark button.dropdown-item:hover { - background-color: #282f2f; - color: #0a0a0a; } - html.theme--documenter-dark a.dropdown-item.is-active, - html.theme--documenter-dark button.dropdown-item.is-active { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .dropdown-divider { - background-color: #5e6d6f; - border: none; - display: block; - height: 1px; - margin: 0.5rem 0; } - html.theme--documenter-dark .level { - align-items: center; - justify-content: space-between; } - html.theme--documenter-dark .level code { - border-radius: 0.4em; } - html.theme--documenter-dark .level img { - display: inline-block; - vertical-align: top; } - html.theme--documenter-dark .level.is-mobile { - display: flex; } - html.theme--documenter-dark .level.is-mobile .level-left, - html.theme--documenter-dark .level.is-mobile .level-right { - display: flex; } - html.theme--documenter-dark .level.is-mobile .level-left + .level-right { - margin-top: 0; } - html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow) { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level { - display: flex; } - html.theme--documenter-dark .level > .level-item:not(.is-narrow) { - flex-grow: 1; } } - html.theme--documenter-dark .level-item { - align-items: center; - display: flex; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; } - html.theme--documenter-dark .level-item .title, - html.theme--documenter-dark .level-item .subtitle { - margin-bottom: 0; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .level-item:not(:last-child) { - margin-bottom: 0.75rem; } } - html.theme--documenter-dark .level-left, - html.theme--documenter-dark .level-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .level-left .level-item.is-flexible, - html.theme--documenter-dark .level-right .level-item.is-flexible { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level-left .level-item:not(:last-child), - html.theme--documenter-dark .level-right .level-item:not(:last-child) { - margin-right: 0.75rem; } } - html.theme--documenter-dark .level-left { - align-items: center; - justify-content: flex-start; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .level-left + .level-right { - margin-top: 1.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level-left { - display: flex; } } - html.theme--documenter-dark .level-right { - align-items: center; - justify-content: flex-end; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level-right { - display: flex; } } - html.theme--documenter-dark .list { - background-color: white; - border-radius: 0.4em; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .list-item { - display: block; - padding: 0.5em 1em; } - html.theme--documenter-dark .list-item:not(a) { - color: #fff; } - html.theme--documenter-dark .list-item:first-child { - border-top-left-radius: 0.4em; - border-top-right-radius: 0.4em; } - html.theme--documenter-dark .list-item:last-child { - border-bottom-left-radius: 0.4em; - border-bottom-right-radius: 0.4em; } - html.theme--documenter-dark .list-item:not(:last-child) { - border-bottom: 1px solid #5e6d6f; } - html.theme--documenter-dark .list-item.is-active { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark a.list-item { - background-color: #282f2f; - cursor: pointer; } - html.theme--documenter-dark .media { - align-items: flex-start; - display: flex; - text-align: left; } - html.theme--documenter-dark .media .content:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .media .media { - border-top: 1px solid rgba(94, 109, 111, 0.5); - display: flex; - padding-top: 0.75rem; } - html.theme--documenter-dark .media .media .content:not(:last-child), - html.theme--documenter-dark .media .media .control:not(:last-child) { - margin-bottom: 0.5rem; } - html.theme--documenter-dark .media .media .media { - padding-top: 0.5rem; } - html.theme--documenter-dark .media .media .media + .media { - margin-top: 0.5rem; } - html.theme--documenter-dark .media + .media { - border-top: 1px solid rgba(94, 109, 111, 0.5); - margin-top: 1rem; - padding-top: 1rem; } - html.theme--documenter-dark .media.is-large + .media { - margin-top: 1.5rem; - padding-top: 1.5rem; } - html.theme--documenter-dark .media-left, - html.theme--documenter-dark .media-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .media-left { - margin-right: 1rem; } - html.theme--documenter-dark .media-right { - margin-left: 1rem; } - html.theme--documenter-dark .media-content { - flex-basis: auto; - flex-grow: 1; - flex-shrink: 1; - text-align: left; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .media-content { - overflow-x: auto; } } - html.theme--documenter-dark .menu { - font-size: 15px; } - html.theme--documenter-dark .menu.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.menu { - font-size: 0.85em; } - html.theme--documenter-dark .menu.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .menu.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .menu-list { - line-height: 1.25; } - html.theme--documenter-dark .menu-list a { - border-radius: 3px; - color: #fff; - display: block; - padding: 0.5em 0.75em; } - html.theme--documenter-dark .menu-list a:hover { - background-color: #282f2f; - color: #f2f2f2; } - html.theme--documenter-dark .menu-list a.is-active { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .menu-list li ul { - border-left: 1px solid #5e6d6f; - margin: 0.75em; - padding-left: 0.75em; } - html.theme--documenter-dark .menu-label { - color: white; - font-size: 0.75em; - letter-spacing: 0.1em; - text-transform: uppercase; } - html.theme--documenter-dark .menu-label:not(:first-child) { - margin-top: 1em; } - html.theme--documenter-dark .menu-label:not(:last-child) { - margin-bottom: 1em; } - html.theme--documenter-dark .message { - background-color: #282f2f; - border-radius: 0.4em; - font-size: 15px; } - html.theme--documenter-dark .message strong { - color: currentColor; } - html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - html.theme--documenter-dark .message.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.message { - font-size: 0.85em; } - html.theme--documenter-dark .message.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .message.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .message.is-white { - background-color: white; } - html.theme--documenter-dark .message.is-white .message-header { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .message.is-white .message-body { - border-color: white; - color: #4d4d4d; } - html.theme--documenter-dark .message.is-black { - background-color: #fafafa; } - html.theme--documenter-dark .message.is-black .message-header { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .message.is-black .message-body { - border-color: #0a0a0a; - color: #090909; } - html.theme--documenter-dark .message.is-light { - background-color: #f9fafb; } - html.theme--documenter-dark .message.is-light .message-header { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .message.is-light .message-body { - border-color: #ecf0f1; - color: #505050; } - html.theme--documenter-dark .message.is-dark, html.theme--documenter-dark .content kbd.message { - background-color: #f9fafa; } - html.theme--documenter-dark .message.is-dark .message-header, html.theme--documenter-dark .content kbd.message .message-header { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .message.is-dark .message-body, html.theme--documenter-dark .content kbd.message .message-body { - border-color: #282f2f; - color: #212526; } - html.theme--documenter-dark .message.is-primary, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink { - background-color: #f8fafc; } - html.theme--documenter-dark .message.is-primary .message-header, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-header { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .message.is-primary .message-body, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-body { - border-color: #375a7f; - color: #2b4159; } - html.theme--documenter-dark .message.is-link { - background-color: #f6fefc; } - html.theme--documenter-dark .message.is-link .message-header { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .message.is-link .message-body { - border-color: #1abc9c; - color: #0b2f28; } - html.theme--documenter-dark .message.is-info { - background-color: #f5fbff; } - html.theme--documenter-dark .message.is-info .message-header { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .message.is-info .message-body { - border-color: #024c7d; - color: #033659; } - html.theme--documenter-dark .message.is-success { - background-color: #f5fff9; } - html.theme--documenter-dark .message.is-success .message-header { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .message.is-success .message-body { - border-color: #008438; - color: #023518; } - html.theme--documenter-dark .message.is-warning { - background-color: #fffcf5; } - html.theme--documenter-dark .message.is-warning .message-header { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .message.is-warning .message-body { - border-color: #ad8100; - color: #3d2e03; } - html.theme--documenter-dark .message.is-danger { - background-color: #fef6f6; } - html.theme--documenter-dark .message.is-danger .message-header { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .message.is-danger .message-body { - border-color: #9e1b0d; - color: #7a170c; } - html.theme--documenter-dark .message-header { - align-items: center; - background-color: #fff; - border-radius: 0.4em 0.4em 0 0; - color: rgba(0, 0, 0, 0.7); - display: flex; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - html.theme--documenter-dark .message-header .delete { - flex-grow: 0; - flex-shrink: 0; - margin-left: 0.75em; } - html.theme--documenter-dark .message-header + .message-body { - border-width: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .message-body { - border-color: #5e6d6f; - border-radius: 0.4em; - border-style: solid; - border-width: 0 0 0 4px; - color: #fff; - padding: 1em 1.25em; } - html.theme--documenter-dark .message-body code, - html.theme--documenter-dark .message-body pre { - background-color: white; } - html.theme--documenter-dark .message-body pre code { - background-color: transparent; } - html.theme--documenter-dark .modal { - align-items: center; - display: none; - flex-direction: column; - justify-content: center; - overflow: hidden; - position: fixed; - z-index: 40; } - html.theme--documenter-dark .modal.is-active { - display: flex; } - html.theme--documenter-dark .modal-background { - background-color: rgba(10, 10, 10, 0.86); } - html.theme--documenter-dark .modal-content, - html.theme--documenter-dark .modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .modal-content, - html.theme--documenter-dark .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; } } - html.theme--documenter-dark .modal-close { - background: none; - height: 40px; - position: fixed; - right: 20px; - top: 20px; - width: 40px; } - html.theme--documenter-dark .modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; - -ms-overflow-y: visible; } - html.theme--documenter-dark .modal-card-head, - html.theme--documenter-dark .modal-card-foot { - align-items: center; - background-color: #282f2f; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; } - html.theme--documenter-dark .modal-card-head { - border-bottom: 1px solid #5e6d6f; - border-top-left-radius: 8px; - border-top-right-radius: 8px; } - html.theme--documenter-dark .modal-card-title { - color: #f2f2f2; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; } - html.theme--documenter-dark .modal-card-foot { - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark .modal-card-foot .button:not(:last-child) { - margin-right: 0.5em; } - html.theme--documenter-dark .modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: white; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; } - html.theme--documenter-dark .navbar { - background-color: #375a7f; - min-height: 4rem; - position: relative; - z-index: 30; } - html.theme--documenter-dark .navbar.is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link { - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after { - border-color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-burger { - color: #0a0a0a; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-white .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-white .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link { - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after { - border-color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active { - background-color: white; - color: #0a0a0a; } } - html.theme--documenter-dark .navbar.is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link { - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active { - background-color: black; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after { - border-color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-burger { - color: white; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-black .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-black .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link { - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active { - background-color: black; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after { - border-color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { - background-color: black; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active { - background-color: #0a0a0a; - color: white; } } - html.theme--documenter-dark .navbar.is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link { - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after { - border-color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-burger { - color: #282f2f; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-light .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-light .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link { - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after { - border-color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active { - background-color: #ecf0f1; - color: #282f2f; } } - html.theme--documenter-dark .navbar.is-dark, html.theme--documenter-dark .content kbd.navbar { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-brand > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link { - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after { - border-color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-burger, html.theme--documenter-dark .content kbd.navbar .navbar-burger { - color: #ecf0f1; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-dark .navbar-start > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-dark .navbar-end > .navbar-item, - html.theme--documenter-dark .content kbd.navbar .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link { - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after { - border-color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { - background-color: #282f2f; - color: #ecf0f1; } } - html.theme--documenter-dark .navbar.is-primary, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-brand > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-burger, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-primary .navbar-start > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-primary .navbar-end > .navbar-item, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { - background-color: #375a7f; - color: #fff; } } - html.theme--documenter-dark .navbar.is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-link .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-link .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active { - background-color: #1abc9c; - color: #fff; } } - html.theme--documenter-dark .navbar.is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-info .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-info .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active { - background-color: #024c7d; - color: #fff; } } - html.theme--documenter-dark .navbar.is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-success .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-success .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active { - background-color: #008438; - color: #fff; } } - html.theme--documenter-dark .navbar.is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-warning .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-warning .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { - background-color: #ad8100; - color: #fff; } } - html.theme--documenter-dark .navbar.is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-danger .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-danger .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { - background-color: #9e1b0d; - color: #fff; } } - html.theme--documenter-dark .navbar > .container { - align-items: stretch; - display: flex; - min-height: 4rem; - width: 100%; } - html.theme--documenter-dark .navbar.has-shadow { - box-shadow: 0 2px 0 0 #282f2f; } - html.theme--documenter-dark .navbar.is-fixed-bottom, html.theme--documenter-dark .navbar.is-fixed-top { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - html.theme--documenter-dark .navbar.is-fixed-bottom { - bottom: 0; } - html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow { - box-shadow: 0 -2px 0 0 #282f2f; } - html.theme--documenter-dark .navbar.is-fixed-top { - top: 0; } - html.theme--documenter-dark html.has-navbar-fixed-top, - html.theme--documenter-dark body.has-navbar-fixed-top { - padding-top: 4rem; } - html.theme--documenter-dark html.has-navbar-fixed-bottom, - html.theme--documenter-dark body.has-navbar-fixed-bottom { - padding-bottom: 4rem; } - html.theme--documenter-dark .navbar-brand, - html.theme--documenter-dark .navbar-tabs { - align-items: stretch; - display: flex; - flex-shrink: 0; - min-height: 4rem; } - html.theme--documenter-dark .navbar-brand a.navbar-item:focus, html.theme--documenter-dark .navbar-brand a.navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .navbar-tabs { - -webkit-overflow-scrolling: touch; - max-width: 100vw; - overflow-x: auto; - overflow-y: hidden; } - html.theme--documenter-dark .navbar-burger { - color: #fff; - cursor: pointer; - display: block; - height: 4rem; - position: relative; - width: 4rem; - margin-left: auto; } - html.theme--documenter-dark .navbar-burger span { - background-color: currentColor; - display: block; - height: 1px; - left: calc(50% - 8px); - position: absolute; - transform-origin: center; - transition-duration: 86ms; - transition-property: background-color, opacity, transform; - transition-timing-function: ease-out; - width: 16px; } - html.theme--documenter-dark .navbar-burger span:nth-child(1) { - top: calc(50% - 6px); } - html.theme--documenter-dark .navbar-burger span:nth-child(2) { - top: calc(50% - 1px); } - html.theme--documenter-dark .navbar-burger span:nth-child(3) { - top: calc(50% + 4px); } - html.theme--documenter-dark .navbar-burger:hover { - background-color: rgba(0, 0, 0, 0.05); } - html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1) { - transform: translateY(5px) rotate(45deg); } - html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2) { - opacity: 0; } - html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3) { - transform: translateY(-5px) rotate(-45deg); } - html.theme--documenter-dark .navbar-menu { - display: none; } - html.theme--documenter-dark .navbar-item, - html.theme--documenter-dark .navbar-link { - color: #fff; - display: block; - line-height: 1.5; - padding: 0.5rem 0.75rem; - position: relative; } - html.theme--documenter-dark .navbar-item .icon:only-child, - html.theme--documenter-dark .navbar-link .icon:only-child { - margin-left: -0.25rem; - margin-right: -0.25rem; } - html.theme--documenter-dark a.navbar-item, - html.theme--documenter-dark .navbar-link { - cursor: pointer; } - html.theme--documenter-dark a.navbar-item:focus, html.theme--documenter-dark a.navbar-item:focus-within, html.theme--documenter-dark a.navbar-item:hover, html.theme--documenter-dark a.navbar-item.is-active, - html.theme--documenter-dark .navbar-link:focus, - html.theme--documenter-dark .navbar-link:focus-within, - html.theme--documenter-dark .navbar-link:hover, - html.theme--documenter-dark .navbar-link.is-active { - background-color: transparent; - color: #1abc9c; } - html.theme--documenter-dark .navbar-item { - display: block; - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .navbar-item img { - max-height: 1.75rem; } - html.theme--documenter-dark .navbar-item.has-dropdown { - padding: 0; } - html.theme--documenter-dark .navbar-item.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .navbar-item.is-tab { - border-bottom: 1px solid transparent; - min-height: 4rem; - padding-bottom: calc(0.5rem - 1px); } - html.theme--documenter-dark .navbar-item.is-tab:focus, html.theme--documenter-dark .navbar-item.is-tab:hover { - background-color: transparent; - border-bottom-color: #1abc9c; } - html.theme--documenter-dark .navbar-item.is-tab.is-active { - background-color: transparent; - border-bottom-color: #1abc9c; - border-bottom-style: solid; - border-bottom-width: 3px; - color: #1abc9c; - padding-bottom: calc(0.5rem - 3px); } - html.theme--documenter-dark .navbar-content { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .navbar-link:not(.is-arrowless) { - padding-right: 2.5em; } - html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after { - border-color: #fff; - margin-top: -0.375em; - right: 1.125em; } - html.theme--documenter-dark .navbar-dropdown { - font-size: 0.875rem; - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - html.theme--documenter-dark .navbar-dropdown .navbar-item { - padding-left: 1.5rem; - padding-right: 1.5rem; } - html.theme--documenter-dark .navbar-divider { - background-color: rgba(0, 0, 0, 0.2); - border: none; - display: none; - height: 2px; - margin: 0.5rem 0; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .navbar > .container { - display: block; } - html.theme--documenter-dark .navbar-brand .navbar-item, - html.theme--documenter-dark .navbar-tabs .navbar-item { - align-items: center; - display: flex; } - html.theme--documenter-dark .navbar-link::after { - display: none; } - html.theme--documenter-dark .navbar-menu { - background-color: #375a7f; - box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); - padding: 0.5rem 0; } - html.theme--documenter-dark .navbar-menu.is-active { - display: block; } - html.theme--documenter-dark .navbar.is-fixed-bottom-touch, html.theme--documenter-dark .navbar.is-fixed-top-touch { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - html.theme--documenter-dark .navbar.is-fixed-bottom-touch { - bottom: 0; } - html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .navbar.is-fixed-top-touch { - top: 0; } - html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu, html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu { - -webkit-overflow-scrolling: touch; - max-height: calc(100vh - 4rem); - overflow: auto; } - html.theme--documenter-dark html.has-navbar-fixed-top-touch, - html.theme--documenter-dark body.has-navbar-fixed-top-touch { - padding-top: 4rem; } - html.theme--documenter-dark html.has-navbar-fixed-bottom-touch, - html.theme--documenter-dark body.has-navbar-fixed-bottom-touch { - padding-bottom: 4rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar, - html.theme--documenter-dark .navbar-menu, - html.theme--documenter-dark .navbar-start, - html.theme--documenter-dark .navbar-end { - align-items: stretch; - display: flex; } - html.theme--documenter-dark .navbar { - min-height: 4rem; } - html.theme--documenter-dark .navbar.is-spaced { - padding: 1rem 2rem; } - html.theme--documenter-dark .navbar.is-spaced .navbar-start, - html.theme--documenter-dark .navbar.is-spaced .navbar-end { - align-items: center; } - html.theme--documenter-dark .navbar.is-spaced a.navbar-item, - html.theme--documenter-dark .navbar.is-spaced .navbar-link { - border-radius: 0.4em; } - html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover, html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus, - html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover, - html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active { - background-color: transparent !important; } - html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { - background-color: transparent !important; } - html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { - background-color: transparent; - color: #dbdee0; } - html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { - background-color: transparent; - color: #1abc9c; } - html.theme--documenter-dark .navbar-burger { - display: none; } - html.theme--documenter-dark .navbar-item, - html.theme--documenter-dark .navbar-link { - align-items: center; - display: flex; } - html.theme--documenter-dark .navbar-item { - display: flex; } - html.theme--documenter-dark .navbar-item.has-dropdown { - align-items: stretch; } - html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after { - transform: rotate(135deg) translate(0.25em, -0.25em); } - html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 8px 8px 0 0; - border-top: none; - bottom: 100%; - box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); - top: auto; } - html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown { - display: block; } - .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { - opacity: 1; - pointer-events: auto; - transform: translateY(0); } - html.theme--documenter-dark .navbar-menu { - flex-grow: 1; - flex-shrink: 0; } - html.theme--documenter-dark .navbar-start { - justify-content: flex-start; - margin-right: auto; } - html.theme--documenter-dark .navbar-end { - justify-content: flex-end; - margin-left: auto; } - html.theme--documenter-dark .navbar-dropdown { - background-color: #375a7f; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - border-top: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); - display: none; - font-size: 0.875rem; - left: 0; - min-width: 100%; - position: absolute; - top: 100%; - z-index: 20; } - html.theme--documenter-dark .navbar-dropdown .navbar-item { - padding: 0.375rem 1rem; - white-space: nowrap; } - html.theme--documenter-dark .navbar-dropdown a.navbar-item { - padding-right: 3rem; } - html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover { - background-color: transparent; - color: #dbdee0; } - html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active { - background-color: transparent; - color: #1abc9c; } - .navbar.is-spaced html.theme--documenter-dark .navbar-dropdown, html.theme--documenter-dark .navbar-dropdown.is-boxed { - border-radius: 8px; - border-top: none; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - display: block; - opacity: 0; - pointer-events: none; - top: calc(100% + (-4px)); - transform: translateY(-5px); - transition-duration: 86ms; - transition-property: opacity, transform; } - html.theme--documenter-dark .navbar-dropdown.is-right { - left: auto; - right: 0; } - html.theme--documenter-dark .navbar-divider { - display: block; } - html.theme--documenter-dark .navbar > .container .navbar-brand, - html.theme--documenter-dark .container > .navbar .navbar-brand { - margin-left: -.75rem; } - html.theme--documenter-dark .navbar > .container .navbar-menu, - html.theme--documenter-dark .container > .navbar .navbar-menu { - margin-right: -.75rem; } - html.theme--documenter-dark .navbar.is-fixed-bottom-desktop, html.theme--documenter-dark .navbar.is-fixed-top-desktop { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - html.theme--documenter-dark .navbar.is-fixed-bottom-desktop { - bottom: 0; } - html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .navbar.is-fixed-top-desktop { - top: 0; } - html.theme--documenter-dark html.has-navbar-fixed-top-desktop, - html.theme--documenter-dark body.has-navbar-fixed-top-desktop { - padding-top: 4rem; } - html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop, - html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop { - padding-bottom: 4rem; } - html.theme--documenter-dark html.has-spaced-navbar-fixed-top, - html.theme--documenter-dark body.has-spaced-navbar-fixed-top { - padding-top: 6rem; } - html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom, - html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom { - padding-bottom: 6rem; } - html.theme--documenter-dark a.navbar-item.is-active, - html.theme--documenter-dark .navbar-link.is-active { - color: #1abc9c; } - html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover), - html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover) { - background-color: transparent; } - html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link { - background-color: transparent; } } - html.theme--documenter-dark .hero.is-fullheight-with-navbar { - min-height: calc(100vh - 4rem); } - html.theme--documenter-dark .pagination { - font-size: 15px; - margin: -0.25rem; } - html.theme--documenter-dark .pagination.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination { - font-size: 0.85em; } - html.theme--documenter-dark .pagination.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .pagination.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .pagination.is-rounded .pagination-previous, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, - html.theme--documenter-dark .pagination.is-rounded .pagination-next, - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { - padding-left: 1em; - padding-right: 1em; - border-radius: 290486px; } - html.theme--documenter-dark .pagination.is-rounded .pagination-link, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { - border-radius: 290486px; } - html.theme--documenter-dark .pagination, - html.theme--documenter-dark .pagination-list { - align-items: center; - display: flex; - justify-content: center; - text-align: center; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark .pagination-ellipsis { - font-size: 1em; - justify-content: center; - margin: 0.25rem; - padding-left: 0.5em; - padding-right: 0.5em; - text-align: center; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-link { - border-color: #5e6d6f; - color: #1abc9c; - min-width: 2.25em; } - html.theme--documenter-dark .pagination-previous:hover, - html.theme--documenter-dark .pagination-next:hover, - html.theme--documenter-dark .pagination-link:hover { - border-color: #8c9b9d; - color: #1dd2af; } - html.theme--documenter-dark .pagination-previous:focus, - html.theme--documenter-dark .pagination-next:focus, - html.theme--documenter-dark .pagination-link:focus { - border-color: #8c9b9d; } - html.theme--documenter-dark .pagination-previous:active, - html.theme--documenter-dark .pagination-next:active, - html.theme--documenter-dark .pagination-link:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } - html.theme--documenter-dark .pagination-previous[disabled], - html.theme--documenter-dark .pagination-next[disabled], - html.theme--documenter-dark .pagination-link[disabled] { - background-color: #dbdee0; - border-color: #dbdee0; - box-shadow: none; - color: #5e6d6f; - opacity: 0.5; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next { - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - html.theme--documenter-dark .pagination-link.is-current { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .pagination-ellipsis { - color: #8c9b9d; - pointer-events: none; } - html.theme--documenter-dark .pagination-list { - flex-wrap: wrap; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .pagination { - flex-wrap: wrap; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .pagination-list li { - flex-grow: 1; - flex-shrink: 1; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .pagination-list { - flex-grow: 1; - flex-shrink: 1; - justify-content: flex-start; - order: 1; } - html.theme--documenter-dark .pagination-previous { - order: 2; } - html.theme--documenter-dark .pagination-next { - order: 3; } - html.theme--documenter-dark .pagination { - justify-content: space-between; } - html.theme--documenter-dark .pagination.is-centered .pagination-previous { - order: 1; } - html.theme--documenter-dark .pagination.is-centered .pagination-list { - justify-content: center; - order: 2; } - html.theme--documenter-dark .pagination.is-centered .pagination-next { - order: 3; } - html.theme--documenter-dark .pagination.is-right .pagination-previous { - order: 1; } - html.theme--documenter-dark .pagination.is-right .pagination-next { - order: 2; } - html.theme--documenter-dark .pagination.is-right .pagination-list { - justify-content: flex-end; - order: 3; } } - html.theme--documenter-dark .panel { - font-size: 15px; } - html.theme--documenter-dark .panel:not(:last-child) { - margin-bottom: 1.5rem; } - html.theme--documenter-dark .panel-heading, - html.theme--documenter-dark .panel-tabs, - html.theme--documenter-dark .panel-block { - border-bottom: 1px solid #5e6d6f; - border-left: 1px solid #5e6d6f; - border-right: 1px solid #5e6d6f; } - html.theme--documenter-dark .panel-heading:first-child, - html.theme--documenter-dark .panel-tabs:first-child, - html.theme--documenter-dark .panel-block:first-child { - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark .panel-heading { - background-color: #282f2f; - border-radius: 0.4em 0.4em 0 0; - color: #f2f2f2; - font-size: 1.25em; - font-weight: 300; - line-height: 1.25; - padding: 0.5em 0.75em; } - html.theme--documenter-dark .panel-tabs { - align-items: flex-end; - display: flex; - font-size: 0.875em; - justify-content: center; } - html.theme--documenter-dark .panel-tabs a { - border-bottom: 1px solid #5e6d6f; - margin-bottom: -1px; - padding: 0.5em; } - html.theme--documenter-dark .panel-tabs a.is-active { - border-bottom-color: #343c3d; - color: #17a689; } - html.theme--documenter-dark .panel-list a { - color: #fff; } - html.theme--documenter-dark .panel-list a:hover { - color: #1abc9c; } - html.theme--documenter-dark .panel-block { - align-items: center; - color: #f2f2f2; - display: flex; - justify-content: flex-start; - padding: 0.5em 0.75em; } - html.theme--documenter-dark .panel-block input[type="checkbox"] { - margin-right: 0.75em; } - html.theme--documenter-dark .panel-block > .control { - flex-grow: 1; - flex-shrink: 1; - width: 100%; } - html.theme--documenter-dark .panel-block.is-wrapped { - flex-wrap: wrap; } - html.theme--documenter-dark .panel-block.is-active { - border-left-color: #1abc9c; - color: #17a689; } - html.theme--documenter-dark .panel-block.is-active .panel-icon { - color: #1abc9c; } - html.theme--documenter-dark a.panel-block, - html.theme--documenter-dark label.panel-block { - cursor: pointer; } - html.theme--documenter-dark a.panel-block:hover, - html.theme--documenter-dark label.panel-block:hover { - background-color: #282f2f; } - html.theme--documenter-dark .panel-icon { - display: inline-block; - font-size: 14px; - height: 1em; - line-height: 1em; - text-align: center; - vertical-align: top; - width: 1em; - color: white; - margin-right: 0.75em; } - html.theme--documenter-dark .panel-icon .fa { - font-size: inherit; - line-height: inherit; } - html.theme--documenter-dark .tabs { - -webkit-overflow-scrolling: touch; - align-items: stretch; - display: flex; - font-size: 15px; - justify-content: space-between; - overflow: hidden; - overflow-x: auto; - white-space: nowrap; } - html.theme--documenter-dark .tabs a { - align-items: center; - border-bottom-color: #5e6d6f; - border-bottom-style: solid; - border-bottom-width: 1px; - color: #fff; - display: flex; - justify-content: center; - margin-bottom: -1px; - padding: 0.5em 1em; - vertical-align: top; } - html.theme--documenter-dark .tabs a:hover { - border-bottom-color: #f2f2f2; - color: #f2f2f2; } - html.theme--documenter-dark .tabs li { - display: block; } - html.theme--documenter-dark .tabs li.is-active a { - border-bottom-color: #1abc9c; - color: #1abc9c; } - html.theme--documenter-dark .tabs ul { - align-items: center; - border-bottom-color: #5e6d6f; - border-bottom-style: solid; - border-bottom-width: 1px; - display: flex; - flex-grow: 1; - flex-shrink: 0; - justify-content: flex-start; } - html.theme--documenter-dark .tabs ul.is-left { - padding-right: 0.75em; } - html.theme--documenter-dark .tabs ul.is-center { - flex: none; - justify-content: center; - padding-left: 0.75em; - padding-right: 0.75em; } - html.theme--documenter-dark .tabs ul.is-right { - justify-content: flex-end; - padding-left: 0.75em; } - html.theme--documenter-dark .tabs .icon:first-child { - margin-right: 0.5em; } - html.theme--documenter-dark .tabs .icon:last-child { - margin-left: 0.5em; } - html.theme--documenter-dark .tabs.is-centered ul { - justify-content: center; } - html.theme--documenter-dark .tabs.is-right ul { - justify-content: flex-end; } - html.theme--documenter-dark .tabs.is-boxed a { - border: 1px solid transparent; - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .tabs.is-boxed a:hover { - background-color: #282f2f; - border-bottom-color: #5e6d6f; } - html.theme--documenter-dark .tabs.is-boxed li.is-active a { - background-color: white; - border-color: #5e6d6f; - border-bottom-color: transparent !important; } - html.theme--documenter-dark .tabs.is-fullwidth li { - flex-grow: 1; - flex-shrink: 0; } - html.theme--documenter-dark .tabs.is-toggle a { - border-color: #5e6d6f; - border-style: solid; - border-width: 1px; - margin-bottom: 0; - position: relative; } - html.theme--documenter-dark .tabs.is-toggle a:hover { - background-color: #282f2f; - border-color: #8c9b9d; - z-index: 2; } - html.theme--documenter-dark .tabs.is-toggle li + li { - margin-left: -1px; } - html.theme--documenter-dark .tabs.is-toggle li:first-child a { - border-radius: 0.4em 0 0 0.4em; } - html.theme--documenter-dark .tabs.is-toggle li:last-child a { - border-radius: 0 0.4em 0.4em 0; } - html.theme--documenter-dark .tabs.is-toggle li.is-active a { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; - z-index: 1; } - html.theme--documenter-dark .tabs.is-toggle ul { - border-bottom: none; } - html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a { - border-bottom-left-radius: 290486px; - border-top-left-radius: 290486px; - padding-left: 1.25em; } - html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a { - border-bottom-right-radius: 290486px; - border-top-right-radius: 290486px; - padding-right: 1.25em; } - html.theme--documenter-dark .tabs.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.tabs { - font-size: 0.85em; } - html.theme--documenter-dark .tabs.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .tabs.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .column { - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - padding: 0.75rem; } - .columns.is-mobile > html.theme--documenter-dark .column.is-narrow { - flex: none; } - .columns.is-mobile > html.theme--documenter-dark .column.is-full { - flex: none; - width: 100%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-three-quarters { - flex: none; - width: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-two-thirds { - flex: none; - width: 66.6666%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-half { - flex: none; - width: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-one-third { - flex: none; - width: 33.3333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-one-quarter { - flex: none; - width: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-one-fifth { - flex: none; - width: 20%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-two-fifths { - flex: none; - width: 40%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-three-fifths { - flex: none; - width: 60%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-four-fifths { - flex: none; - width: 80%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-quarters { - margin-left: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-thirds { - margin-left: 66.6666%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-half { - margin-left: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-third { - margin-left: 33.3333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-quarter { - margin-left: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-fifth { - margin-left: 20%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-fifths { - margin-left: 40%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-fifths { - margin-left: 60%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-four-fifths { - margin-left: 80%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-0 { - flex: none; - width: 0%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-0 { - margin-left: 0%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-1 { - flex: none; - width: 8.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-1 { - margin-left: 8.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-2 { - flex: none; - width: 16.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-2 { - margin-left: 16.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-3 { - flex: none; - width: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-3 { - margin-left: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-4 { - flex: none; - width: 33.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-4 { - margin-left: 33.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-5 { - flex: none; - width: 41.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-5 { - margin-left: 41.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-6 { - flex: none; - width: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-6 { - margin-left: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-7 { - flex: none; - width: 58.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-7 { - margin-left: 58.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-8 { - flex: none; - width: 66.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-8 { - margin-left: 66.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-9 { - flex: none; - width: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-9 { - margin-left: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-10 { - flex: none; - width: 83.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-10 { - margin-left: 83.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-11 { - flex: none; - width: 91.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-11 { - margin-left: 91.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-12 { - flex: none; - width: 100%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-12 { - margin-left: 100%; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .column.is-narrow-mobile { - flex: none; } - html.theme--documenter-dark .column.is-full-mobile { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-mobile { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-mobile { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-mobile { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-mobile { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-mobile { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-mobile { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-mobile { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-mobile { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-mobile { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-mobile { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-mobile { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-mobile { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-mobile { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-mobile { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-mobile { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-mobile { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-mobile { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-mobile { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-mobile { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-mobile { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-mobile { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-mobile { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-mobile { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-mobile { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-mobile { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-mobile { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-mobile { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-mobile { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-mobile { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-mobile { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-mobile { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-mobile { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-mobile { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-mobile { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-mobile { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-mobile { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-mobile { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-mobile { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-mobile { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-mobile { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-mobile { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-mobile { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-mobile { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-mobile { - margin-left: 100%; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .column.is-narrow, html.theme--documenter-dark .column.is-narrow-tablet { - flex: none; } - html.theme--documenter-dark .column.is-full, html.theme--documenter-dark .column.is-full-tablet { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters, html.theme--documenter-dark .column.is-three-quarters-tablet { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds, html.theme--documenter-dark .column.is-two-thirds-tablet { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half, html.theme--documenter-dark .column.is-half-tablet { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third, html.theme--documenter-dark .column.is-one-third-tablet { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter, html.theme--documenter-dark .column.is-one-quarter-tablet { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth, html.theme--documenter-dark .column.is-one-fifth-tablet { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths, html.theme--documenter-dark .column.is-two-fifths-tablet { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths, html.theme--documenter-dark .column.is-three-fifths-tablet { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths, html.theme--documenter-dark .column.is-four-fifths-tablet { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters, html.theme--documenter-dark .column.is-offset-three-quarters-tablet { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds, html.theme--documenter-dark .column.is-offset-two-thirds-tablet { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half, html.theme--documenter-dark .column.is-offset-half-tablet { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third, html.theme--documenter-dark .column.is-offset-one-third-tablet { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter, html.theme--documenter-dark .column.is-offset-one-quarter-tablet { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth, html.theme--documenter-dark .column.is-offset-one-fifth-tablet { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths, html.theme--documenter-dark .column.is-offset-two-fifths-tablet { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths, html.theme--documenter-dark .column.is-offset-three-fifths-tablet { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths, html.theme--documenter-dark .column.is-offset-four-fifths-tablet { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0, html.theme--documenter-dark .column.is-0-tablet { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0, html.theme--documenter-dark .column.is-offset-0-tablet { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1, html.theme--documenter-dark .column.is-1-tablet { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1, html.theme--documenter-dark .column.is-offset-1-tablet { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2, html.theme--documenter-dark .column.is-2-tablet { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2, html.theme--documenter-dark .column.is-offset-2-tablet { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3, html.theme--documenter-dark .column.is-3-tablet { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3, html.theme--documenter-dark .column.is-offset-3-tablet { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4, html.theme--documenter-dark .column.is-4-tablet { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4, html.theme--documenter-dark .column.is-offset-4-tablet { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5, html.theme--documenter-dark .column.is-5-tablet { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5, html.theme--documenter-dark .column.is-offset-5-tablet { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6, html.theme--documenter-dark .column.is-6-tablet { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6, html.theme--documenter-dark .column.is-offset-6-tablet { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7, html.theme--documenter-dark .column.is-7-tablet { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7, html.theme--documenter-dark .column.is-offset-7-tablet { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8, html.theme--documenter-dark .column.is-8-tablet { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8, html.theme--documenter-dark .column.is-offset-8-tablet { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9, html.theme--documenter-dark .column.is-9-tablet { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9, html.theme--documenter-dark .column.is-offset-9-tablet { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10, html.theme--documenter-dark .column.is-10-tablet { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10, html.theme--documenter-dark .column.is-offset-10-tablet { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11, html.theme--documenter-dark .column.is-11-tablet { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11, html.theme--documenter-dark .column.is-offset-11-tablet { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12, html.theme--documenter-dark .column.is-12-tablet { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12, html.theme--documenter-dark .column.is-offset-12-tablet { - margin-left: 100%; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .column.is-narrow-touch { - flex: none; } - html.theme--documenter-dark .column.is-full-touch { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-touch { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-touch { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-touch { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-touch { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-touch { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-touch { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-touch { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-touch { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-touch { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-touch { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-touch { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-touch { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-touch { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-touch { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-touch { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-touch { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-touch { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-touch { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-touch { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-touch { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-touch { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-touch { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-touch { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-touch { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-touch { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-touch { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-touch { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-touch { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-touch { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-touch { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-touch { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-touch { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-touch { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-touch { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-touch { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-touch { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-touch { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-touch { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-touch { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-touch { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-touch { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-touch { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-touch { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-touch { - margin-left: 100%; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .column.is-narrow-desktop { - flex: none; } - html.theme--documenter-dark .column.is-full-desktop { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-desktop { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-desktop { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-desktop { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-desktop { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-desktop { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-desktop { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-desktop { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-desktop { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-desktop { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-desktop { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-desktop { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-desktop { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-desktop { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-desktop { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-desktop { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-desktop { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-desktop { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-desktop { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-desktop { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-desktop { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-desktop { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-desktop { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-desktop { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-desktop { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-desktop { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-desktop { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-desktop { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-desktop { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-desktop { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-desktop { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-desktop { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-desktop { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-desktop { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-desktop { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-desktop { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-desktop { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-desktop { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-desktop { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-desktop { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-desktop { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-desktop { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-desktop { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-desktop { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-desktop { - margin-left: 100%; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .column.is-narrow-widescreen { - flex: none; } - html.theme--documenter-dark .column.is-full-widescreen { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-widescreen { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-widescreen { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-widescreen { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-widescreen { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-widescreen { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-widescreen { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-widescreen { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-widescreen { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-widescreen { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-widescreen { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-widescreen { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-widescreen { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-widescreen { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-widescreen { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-widescreen { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-widescreen { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-widescreen { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-widescreen { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-widescreen { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-widescreen { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-widescreen { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-widescreen { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-widescreen { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-widescreen { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-widescreen { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-widescreen { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-widescreen { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-widescreen { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-widescreen { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-widescreen { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-widescreen { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-widescreen { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-widescreen { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-widescreen { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-widescreen { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-widescreen { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-widescreen { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-widescreen { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-widescreen { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-widescreen { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-widescreen { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-widescreen { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-widescreen { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-widescreen { - margin-left: 100%; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .column.is-narrow-fullhd { - flex: none; } - html.theme--documenter-dark .column.is-full-fullhd { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-fullhd { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-fullhd { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-fullhd { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-fullhd { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-fullhd { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-fullhd { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-fullhd { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-fullhd { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-fullhd { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-fullhd { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-fullhd { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-fullhd { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-fullhd { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-fullhd { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-fullhd { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-fullhd { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-fullhd { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-fullhd { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-fullhd { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-fullhd { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-fullhd { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-fullhd { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-fullhd { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-fullhd { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-fullhd { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-fullhd { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-fullhd { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-fullhd { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-fullhd { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-fullhd { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-fullhd { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-fullhd { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-fullhd { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-fullhd { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-fullhd { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-fullhd { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-fullhd { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-fullhd { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-fullhd { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-fullhd { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-fullhd { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-fullhd { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-fullhd { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-fullhd { - margin-left: 100%; } } - html.theme--documenter-dark .columns { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - html.theme--documenter-dark .columns:last-child { - margin-bottom: -0.75rem; } - html.theme--documenter-dark .columns:not(:last-child) { - margin-bottom: calc(1.5rem - 0.75rem); } - html.theme--documenter-dark .columns.is-centered { - justify-content: center; } - html.theme--documenter-dark .columns.is-gapless { - margin-left: 0; - margin-right: 0; - margin-top: 0; } - html.theme--documenter-dark .columns.is-gapless > .column { - margin: 0; - padding: 0 !important; } - html.theme--documenter-dark .columns.is-gapless:not(:last-child) { - margin-bottom: 1.5rem; } - html.theme--documenter-dark .columns.is-gapless:last-child { - margin-bottom: 0; } - html.theme--documenter-dark .columns.is-mobile { - display: flex; } - html.theme--documenter-dark .columns.is-multiline { - flex-wrap: wrap; } - html.theme--documenter-dark .columns.is-vcentered { - align-items: center; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns:not(.is-desktop) { - display: flex; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-desktop { - display: flex; } } - html.theme--documenter-dark .columns.is-variable { - --columnGap: 0.75rem; - margin-left: calc(-1 * var(--columnGap)); - margin-right: calc(-1 * var(--columnGap)); } - html.theme--documenter-dark .columns.is-variable .column { - padding-left: var(--columnGap); - padding-right: var(--columnGap); } - html.theme--documenter-dark .columns.is-variable.is-0 { - --columnGap: 0rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-0-mobile { - --columnGap: 0rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-0-tablet { - --columnGap: 0rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-0-tablet-only { - --columnGap: 0rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-0-touch { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-0-desktop { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-0-desktop-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-0-widescreen { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-0-fullhd { - --columnGap: 0rem; } } - html.theme--documenter-dark .columns.is-variable.is-1 { - --columnGap: 0.25rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-1-mobile { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-1-tablet { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-1-tablet-only { - --columnGap: 0.25rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-1-touch { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-1-desktop { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-1-desktop-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-1-widescreen { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-1-fullhd { - --columnGap: 0.25rem; } } - html.theme--documenter-dark .columns.is-variable.is-2 { - --columnGap: 0.5rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-2-mobile { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-2-tablet { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-2-tablet-only { - --columnGap: 0.5rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-2-touch { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-2-desktop { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-2-desktop-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-2-widescreen { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-2-fullhd { - --columnGap: 0.5rem; } } - html.theme--documenter-dark .columns.is-variable.is-3 { - --columnGap: 0.75rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-3-mobile { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-3-tablet { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-3-tablet-only { - --columnGap: 0.75rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-3-touch { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-3-desktop { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-3-desktop-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-3-widescreen { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-3-fullhd { - --columnGap: 0.75rem; } } - html.theme--documenter-dark .columns.is-variable.is-4 { - --columnGap: 1rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-4-mobile { - --columnGap: 1rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-4-tablet { - --columnGap: 1rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-4-tablet-only { - --columnGap: 1rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-4-touch { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-4-desktop { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-4-desktop-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-4-widescreen { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-4-fullhd { - --columnGap: 1rem; } } - html.theme--documenter-dark .columns.is-variable.is-5 { - --columnGap: 1.25rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-5-mobile { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-5-tablet { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-5-tablet-only { - --columnGap: 1.25rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-5-touch { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-5-desktop { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-5-desktop-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-5-widescreen { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-5-fullhd { - --columnGap: 1.25rem; } } - html.theme--documenter-dark .columns.is-variable.is-6 { - --columnGap: 1.5rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-6-mobile { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-6-tablet { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-6-tablet-only { - --columnGap: 1.5rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-6-touch { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-6-desktop { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-6-desktop-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-6-widescreen { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-6-fullhd { - --columnGap: 1.5rem; } } - html.theme--documenter-dark .columns.is-variable.is-7 { - --columnGap: 1.75rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-7-mobile { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-7-tablet { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-7-tablet-only { - --columnGap: 1.75rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-7-touch { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-7-desktop { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-7-desktop-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-7-widescreen { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-7-fullhd { - --columnGap: 1.75rem; } } - html.theme--documenter-dark .columns.is-variable.is-8 { - --columnGap: 2rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-8-mobile { - --columnGap: 2rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-8-tablet { - --columnGap: 2rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-8-tablet-only { - --columnGap: 2rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-8-touch { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-8-desktop { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-8-desktop-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-8-widescreen { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-8-fullhd { - --columnGap: 2rem; } } - html.theme--documenter-dark .tile { - align-items: stretch; - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - min-height: min-content; } - html.theme--documenter-dark .tile.is-ancestor { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - html.theme--documenter-dark .tile.is-ancestor:last-child { - margin-bottom: -0.75rem; } - html.theme--documenter-dark .tile.is-ancestor:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .tile.is-child { - margin: 0 !important; } - html.theme--documenter-dark .tile.is-parent { - padding: 0.75rem; } - html.theme--documenter-dark .tile.is-vertical { - flex-direction: column; } - html.theme--documenter-dark .tile.is-vertical > .tile.is-child:not(:last-child) { - margin-bottom: 1.5rem !important; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .tile:not(.is-child) { - display: flex; } - html.theme--documenter-dark .tile.is-1 { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .tile.is-2 { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .tile.is-3 { - flex: none; - width: 25%; } - html.theme--documenter-dark .tile.is-4 { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .tile.is-5 { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .tile.is-6 { - flex: none; - width: 50%; } - html.theme--documenter-dark .tile.is-7 { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .tile.is-8 { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .tile.is-9 { - flex: none; - width: 75%; } - html.theme--documenter-dark .tile.is-10 { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .tile.is-11 { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .tile.is-12 { - flex: none; - width: 100%; } } - html.theme--documenter-dark .hero { - align-items: stretch; - display: flex; - flex-direction: column; - justify-content: space-between; } - html.theme--documenter-dark .hero .navbar { - background: none; } - html.theme--documenter-dark .hero .tabs ul { - border-bottom: none; } - html.theme--documenter-dark .hero.is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-white strong { - color: inherit; } - html.theme--documenter-dark .hero.is-white .title { - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white .subtitle { - color: rgba(10, 10, 10, 0.9); } - html.theme--documenter-dark .hero.is-white .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-white .subtitle strong { - color: #0a0a0a; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-white .navbar-menu { - background-color: white; } } - html.theme--documenter-dark .hero.is-white .navbar-item, - html.theme--documenter-dark .hero.is-white .navbar-link { - color: rgba(10, 10, 10, 0.7); } - html.theme--documenter-dark .hero.is-white a.navbar-item:hover, html.theme--documenter-dark .hero.is-white a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-white .navbar-link:hover, - html.theme--documenter-dark .hero.is-white .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white .tabs a { - color: #0a0a0a; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-white .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-white .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-white .tabs.is-boxed a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a { - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .hero.is-white.is-bold { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } } - html.theme--documenter-dark .hero.is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-black strong { - color: inherit; } - html.theme--documenter-dark .hero.is-black .title { - color: white; } - html.theme--documenter-dark .hero.is-black .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-black .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-black .subtitle strong { - color: white; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-black .navbar-menu { - background-color: #0a0a0a; } } - html.theme--documenter-dark .hero.is-black .navbar-item, - html.theme--documenter-dark .hero.is-black .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-black a.navbar-item:hover, html.theme--documenter-dark .hero.is-black a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-black .navbar-link:hover, - html.theme--documenter-dark .hero.is-black .navbar-link.is-active { - background-color: black; - color: white; } - html.theme--documenter-dark .hero.is-black .tabs a { - color: white; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-black .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-black .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-black .tabs.is-boxed a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a { - color: white; } - html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover { - background-color: white; - border-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-black.is-bold { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } - html.theme--documenter-dark .hero.is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-light strong { - color: inherit; } - html.theme--documenter-dark .hero.is-light .title { - color: #282f2f; } - html.theme--documenter-dark .hero.is-light .subtitle { - color: rgba(40, 47, 47, 0.9); } - html.theme--documenter-dark .hero.is-light .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-light .subtitle strong { - color: #282f2f; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-light .navbar-menu { - background-color: #ecf0f1; } } - html.theme--documenter-dark .hero.is-light .navbar-item, - html.theme--documenter-dark .hero.is-light .navbar-link { - color: rgba(40, 47, 47, 0.7); } - html.theme--documenter-dark .hero.is-light a.navbar-item:hover, html.theme--documenter-dark .hero.is-light a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-light .navbar-link:hover, - html.theme--documenter-dark .hero.is-light .navbar-link.is-active { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .hero.is-light .tabs a { - color: #282f2f; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-light .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-light .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-light .tabs.is-boxed a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a { - color: #282f2f; } - html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover { - background-color: #282f2f; - border-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-light.is-bold { - background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } } - html.theme--documenter-dark .hero.is-dark, html.theme--documenter-dark .content kbd.hero { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-dark strong, - html.theme--documenter-dark .content kbd.hero strong { - color: inherit; } - html.theme--documenter-dark .hero.is-dark .title, html.theme--documenter-dark .content kbd.hero .title { - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark .subtitle, html.theme--documenter-dark .content kbd.hero .subtitle { - color: rgba(236, 240, 241, 0.9); } - html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button), html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-dark .subtitle strong, - html.theme--documenter-dark .content kbd.hero .subtitle strong { - color: #ecf0f1; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-dark .navbar-menu, html.theme--documenter-dark .content kbd.hero .navbar-menu { - background-color: #282f2f; } } - html.theme--documenter-dark .hero.is-dark .navbar-item, html.theme--documenter-dark .content kbd.hero .navbar-item, - html.theme--documenter-dark .hero.is-dark .navbar-link, - html.theme--documenter-dark .content kbd.hero .navbar-link { - color: rgba(236, 240, 241, 0.7); } - html.theme--documenter-dark .hero.is-dark a.navbar-item:hover, html.theme--documenter-dark .content kbd.hero a.navbar-item:hover, html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active, html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-dark .navbar-link:hover, - html.theme--documenter-dark .content kbd.hero .navbar-link:hover, - html.theme--documenter-dark .hero.is-dark .navbar-link.is-active, - html.theme--documenter-dark .content kbd.hero .navbar-link.is-active { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark .tabs a, html.theme--documenter-dark .content kbd.hero .tabs a { - color: #ecf0f1; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-dark .tabs a:hover, html.theme--documenter-dark .content kbd.hero .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-dark .tabs li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a { - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a:hover { - background-color: #ecf0f1; - border-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .hero.is-dark.is-bold, html.theme--documenter-dark .content kbd.hero.is-bold { - background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu, html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } } - html.theme--documenter-dark .hero.is-primary, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-primary strong, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink strong { - color: inherit; } - html.theme--documenter-dark .hero.is-primary .title, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .title { - color: #fff; } - html.theme--documenter-dark .hero.is-primary .subtitle, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-primary .subtitle strong, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-primary .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-menu { - background-color: #375a7f; } } - html.theme--documenter-dark .hero.is-primary .navbar-item, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-item, - html.theme--documenter-dark .hero.is-primary .navbar-link, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-primary a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-primary .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, - html.theme--documenter-dark .hero.is-primary .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .hero.is-primary .tabs a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-primary .tabs a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-primary .tabs li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #375a7f; } - html.theme--documenter-dark .hero.is-primary.is-bold, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink { - background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { - background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } } - html.theme--documenter-dark .hero.is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-link strong { - color: inherit; } - html.theme--documenter-dark .hero.is-link .title { - color: #fff; } - html.theme--documenter-dark .hero.is-link .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-link .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-link .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-link .navbar-menu { - background-color: #1abc9c; } } - html.theme--documenter-dark .hero.is-link .navbar-item, - html.theme--documenter-dark .hero.is-link .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-link a.navbar-item:hover, html.theme--documenter-dark .hero.is-link a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-link .navbar-link:hover, - html.theme--documenter-dark .hero.is-link .navbar-link.is-active { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .hero.is-link .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-link .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-link .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-link .tabs.is-boxed a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #1abc9c; } - html.theme--documenter-dark .hero.is-link.is-bold { - background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } } - html.theme--documenter-dark .hero.is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-info strong { - color: inherit; } - html.theme--documenter-dark .hero.is-info .title { - color: #fff; } - html.theme--documenter-dark .hero.is-info .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-info .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-info .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-info .navbar-menu { - background-color: #024c7d; } } - html.theme--documenter-dark .hero.is-info .navbar-item, - html.theme--documenter-dark .hero.is-info .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-info a.navbar-item:hover, html.theme--documenter-dark .hero.is-info a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-info .navbar-link:hover, - html.theme--documenter-dark .hero.is-info .navbar-link.is-active { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .hero.is-info .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-info .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-info .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-info .tabs.is-boxed a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #024c7d; } - html.theme--documenter-dark .hero.is-info.is-bold { - background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } } - html.theme--documenter-dark .hero.is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-success strong { - color: inherit; } - html.theme--documenter-dark .hero.is-success .title { - color: #fff; } - html.theme--documenter-dark .hero.is-success .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-success .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-success .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-success .navbar-menu { - background-color: #008438; } } - html.theme--documenter-dark .hero.is-success .navbar-item, - html.theme--documenter-dark .hero.is-success .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-success a.navbar-item:hover, html.theme--documenter-dark .hero.is-success a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-success .navbar-link:hover, - html.theme--documenter-dark .hero.is-success .navbar-link.is-active { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .hero.is-success .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-success .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-success .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-success .tabs.is-boxed a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #008438; } - html.theme--documenter-dark .hero.is-success.is-bold { - background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } } - html.theme--documenter-dark .hero.is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-warning strong { - color: inherit; } - html.theme--documenter-dark .hero.is-warning .title { - color: #fff; } - html.theme--documenter-dark .hero.is-warning .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-warning .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-warning .navbar-menu { - background-color: #ad8100; } } - html.theme--documenter-dark .hero.is-warning .navbar-item, - html.theme--documenter-dark .hero.is-warning .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-warning a.navbar-item:hover, html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-warning .navbar-link:hover, - html.theme--documenter-dark .hero.is-warning .navbar-link.is-active { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .hero.is-warning .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-warning .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-warning .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #ad8100; } - html.theme--documenter-dark .hero.is-warning.is-bold { - background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } } - html.theme--documenter-dark .hero.is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-danger strong { - color: inherit; } - html.theme--documenter-dark .hero.is-danger .title { - color: #fff; } - html.theme--documenter-dark .hero.is-danger .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-danger .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-danger .navbar-menu { - background-color: #9e1b0d; } } - html.theme--documenter-dark .hero.is-danger .navbar-item, - html.theme--documenter-dark .hero.is-danger .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-danger a.navbar-item:hover, html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-danger .navbar-link:hover, - html.theme--documenter-dark .hero.is-danger .navbar-link.is-active { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .hero.is-danger .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-danger .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-danger .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #9e1b0d; } - html.theme--documenter-dark .hero.is-danger.is-bold { - background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } } - html.theme--documenter-dark .hero.is-small .hero-body, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.hero .hero-body { - padding-bottom: 1.5rem; - padding-top: 1.5rem; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .hero.is-medium .hero-body { - padding-bottom: 9rem; - padding-top: 9rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .hero.is-large .hero-body { - padding-bottom: 18rem; - padding-top: 18rem; } } - html.theme--documenter-dark .hero.is-halfheight .hero-body, html.theme--documenter-dark .hero.is-fullheight .hero-body, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body { - align-items: center; - display: flex; } - html.theme--documenter-dark .hero.is-halfheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body > .container { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .hero.is-halfheight { - min-height: 50vh; } - html.theme--documenter-dark .hero.is-fullheight { - min-height: 100vh; } - html.theme--documenter-dark .hero-video { - overflow: hidden; } - html.theme--documenter-dark .hero-video video { - left: 50%; - min-height: 100%; - min-width: 100%; - position: absolute; - top: 50%; - transform: translate3d(-50%, -50%, 0); } - html.theme--documenter-dark .hero-video.is-transparent { - opacity: 0.3; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero-video { - display: none; } } - html.theme--documenter-dark .hero-buttons { - margin-top: 1.5rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero-buttons .button { - display: flex; } - html.theme--documenter-dark .hero-buttons .button:not(:last-child) { - margin-bottom: 0.75rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .hero-buttons { - display: flex; - justify-content: center; } - html.theme--documenter-dark .hero-buttons .button:not(:last-child) { - margin-right: 1.5rem; } } - html.theme--documenter-dark .hero-head, - html.theme--documenter-dark .hero-foot { - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .hero-body { - flex-grow: 1; - flex-shrink: 0; - padding: 3rem 1.5rem; } - html.theme--documenter-dark .section { - padding: 3rem 1.5rem; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .section.is-medium { - padding: 9rem 1.5rem; } - html.theme--documenter-dark .section.is-large { - padding: 18rem 1.5rem; } } - html.theme--documenter-dark .footer { - background-color: #282f2f; - padding: 3rem 1.5rem 6rem; } - html.theme--documenter-dark hr { - height: 1px; } - html.theme--documenter-dark h6 { - text-transform: uppercase; - letter-spacing: 0.5px; } - html.theme--documenter-dark .hero { - background-color: #343c3d; } - html.theme--documenter-dark a { - transition: all 200ms ease; } - html.theme--documenter-dark .button { - transition: all 200ms ease; - border-width: 1px; - color: white; } - html.theme--documenter-dark .button.is-active, html.theme--documenter-dark .button.is-focused, html.theme--documenter-dark .button:active, html.theme--documenter-dark .button:focus { - box-shadow: 0 0 0 2px rgba(140, 155, 157, 0.5); } - html.theme--documenter-dark .button.is-white.is-hovered, html.theme--documenter-dark .button.is-white:hover { - background-color: white; } - html.theme--documenter-dark .button.is-white.is-active, html.theme--documenter-dark .button.is-white.is-focused, html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white:focus { - border-color: white; - box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5); } - html.theme--documenter-dark .button.is-black.is-hovered, html.theme--documenter-dark .button.is-black:hover { - background-color: #1d1d1d; } - html.theme--documenter-dark .button.is-black.is-active, html.theme--documenter-dark .button.is-black.is-focused, html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black:focus { - border-color: #0a0a0a; - box-shadow: 0 0 0 2px rgba(10, 10, 10, 0.5); } - html.theme--documenter-dark .button.is-light.is-hovered, html.theme--documenter-dark .button.is-light:hover { - background-color: white; } - html.theme--documenter-dark .button.is-light.is-active, html.theme--documenter-dark .button.is-light.is-focused, html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light:focus { - border-color: #ecf0f1; - box-shadow: 0 0 0 2px rgba(236, 240, 241, 0.5); } - html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered, html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover { - background-color: #3a4344; } - html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused, html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus { - border-color: #282f2f; - box-shadow: 0 0 0 2px rgba(40, 47, 47, 0.5); } - html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover { - background-color: #436d9a; } - html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink, html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus { - border-color: #375a7f; - box-shadow: 0 0 0 2px rgba(55, 90, 127, 0.5); } - html.theme--documenter-dark .button.is-link.is-hovered, html.theme--documenter-dark .button.is-link:hover { - background-color: #1fdeb8; } - html.theme--documenter-dark .button.is-link.is-active, html.theme--documenter-dark .button.is-link.is-focused, html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link:focus { - border-color: #1abc9c; - box-shadow: 0 0 0 2px rgba(26, 188, 156, 0.5); } - html.theme--documenter-dark .button.is-info.is-hovered, html.theme--documenter-dark .button.is-info:hover { - background-color: #0363a3; } - html.theme--documenter-dark .button.is-info.is-active, html.theme--documenter-dark .button.is-info.is-focused, html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info:focus { - border-color: #024c7d; - box-shadow: 0 0 0 2px rgba(2, 76, 125, 0.5); } - html.theme--documenter-dark .button.is-success.is-hovered, html.theme--documenter-dark .button.is-success:hover { - background-color: #00aa48; } - html.theme--documenter-dark .button.is-success.is-active, html.theme--documenter-dark .button.is-success.is-focused, html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success:focus { - border-color: #008438; - box-shadow: 0 0 0 2px rgba(0, 132, 56, 0.5); } - html.theme--documenter-dark .button.is-warning.is-hovered, html.theme--documenter-dark .button.is-warning:hover { - background-color: #d39e00; } - html.theme--documenter-dark .button.is-warning.is-active, html.theme--documenter-dark .button.is-warning.is-focused, html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning:focus { - border-color: #ad8100; - box-shadow: 0 0 0 2px rgba(173, 129, 0, 0.5); } - html.theme--documenter-dark .button.is-danger.is-hovered, html.theme--documenter-dark .button.is-danger:hover { - background-color: #c12110; } - html.theme--documenter-dark .button.is-danger.is-active, html.theme--documenter-dark .button.is-danger.is-focused, html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger:focus { - border-color: #9e1b0d; - box-shadow: 0 0 0 2px rgba(158, 27, 13, 0.5); } - html.theme--documenter-dark .label { - color: #dbdee0; } - html.theme--documenter-dark .button, - html.theme--documenter-dark .control.has-icons-left .icon, - html.theme--documenter-dark .control.has-icons-right .icon, - html.theme--documenter-dark .input, - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark .pagination-ellipsis, - html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .select, - html.theme--documenter-dark .select select, - html.theme--documenter-dark .textarea { - height: 2.5em; } - - html.theme--documenter-dark .input, - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark .textarea { - transition: all 200ms ease; - box-shadow: none; - border-width: 1px; - padding-left: 1em; - padding-right: 1em; } - html.theme--documenter-dark .select:after, - html.theme--documenter-dark .select select { - border-width: 1px; } - html.theme--documenter-dark .control.has-addons .button, - html.theme--documenter-dark .control.has-addons .input, - html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search > input, - html.theme--documenter-dark .control.has-addons .select { - margin-right: -1px; } - html.theme--documenter-dark .notification { - background-color: #343c3d; } - html.theme--documenter-dark .card { - box-shadow: none; - border: 1px solid #343c3d; - background-color: #282f2f; - border-radius: 0.4em; } - html.theme--documenter-dark .card .card-image img { - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .card .card-header { - box-shadow: none; - background-color: rgba(18, 18, 18, 0.2); - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .card .card-footer { - background-color: rgba(18, 18, 18, 0.2); } - html.theme--documenter-dark .card .card-footer, - html.theme--documenter-dark .card .card-footer-item { - border-width: 1px; - border-color: #343c3d; } - html.theme--documenter-dark .notification.is-white a:not(.button) { - color: #0a0a0a; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-black a:not(.button) { - color: white; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-light a:not(.button) { - color: #282f2f; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-dark a:not(.button), html.theme--documenter-dark .content kbd.notification a:not(.button) { - color: #ecf0f1; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-primary a:not(.button), html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-link a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-info a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-success a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-warning a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-danger a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .tag, html.theme--documenter-dark .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .content kbd { - border-radius: 0.4em; } - html.theme--documenter-dark .menu-list a { - transition: all 300ms ease; } - html.theme--documenter-dark .modal-card-body { - background-color: #282f2f; } - html.theme--documenter-dark .modal-card-foot, - html.theme--documenter-dark .modal-card-head { - border-color: #343c3d; } - html.theme--documenter-dark .message-header { - font-weight: 700; - background-color: #343c3d; - color: white; } - html.theme--documenter-dark .message-body { - border-width: 1px; - border-color: #343c3d; } - html.theme--documenter-dark .navbar { - border-radius: 0.4em; } - html.theme--documenter-dark .navbar.is-transparent { - background: none; } - html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { - background-color: #1abc9c; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .navbar .navbar-menu { - background-color: #375a7f; - border-radius: 0 0 0.4em 0.4em; } } - html.theme--documenter-dark .hero .navbar, - html.theme--documenter-dark body > .navbar { - border-radius: 0; } - html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-previous { - border-width: 1px; } - html.theme--documenter-dark .panel-block, - html.theme--documenter-dark .panel-heading, - html.theme--documenter-dark .panel-tabs { - border-width: 1px; } - html.theme--documenter-dark .panel-block:first-child, - html.theme--documenter-dark .panel-heading:first-child, - html.theme--documenter-dark .panel-tabs:first-child { - border-top-width: 1px; } - html.theme--documenter-dark .panel-heading { - font-weight: 700; } - html.theme--documenter-dark .panel-tabs a { - border-width: 1px; - margin-bottom: -1px; } - html.theme--documenter-dark .panel-tabs a.is-active { - border-bottom-color: #17a689; } - html.theme--documenter-dark .panel-block:hover { - color: #1dd2af; } - html.theme--documenter-dark .panel-block:hover .panel-icon { - color: #1dd2af; } - html.theme--documenter-dark .panel-block.is-active .panel-icon { - color: #17a689; } - html.theme--documenter-dark .tabs a { - border-bottom-width: 1px; - margin-bottom: -1px; } - html.theme--documenter-dark .tabs ul { - border-bottom-width: 1px; } - html.theme--documenter-dark .tabs.is-boxed a { - border-width: 1px; } - html.theme--documenter-dark .tabs.is-boxed li.is-active a { - background-color: #1f2424; } - html.theme--documenter-dark .tabs.is-toggle li a { - border-width: 1px; - margin-bottom: 0; } - html.theme--documenter-dark .tabs.is-toggle li + li { - margin-left: -1px; } - html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark h1 .docs-heading-anchor, html.theme--documenter-dark h1 .docs-heading-anchor:hover, html.theme--documenter-dark h1 .docs-heading-anchor:visited, html.theme--documenter-dark h2 .docs-heading-anchor, html.theme--documenter-dark h2 .docs-heading-anchor:hover, html.theme--documenter-dark h2 .docs-heading-anchor:visited, html.theme--documenter-dark h3 .docs-heading-anchor, html.theme--documenter-dark h3 .docs-heading-anchor:hover, html.theme--documenter-dark h3 .docs-heading-anchor:visited, html.theme--documenter-dark h4 .docs-heading-anchor, html.theme--documenter-dark h4 .docs-heading-anchor:hover, html.theme--documenter-dark h4 .docs-heading-anchor:visited, html.theme--documenter-dark h5 .docs-heading-anchor, html.theme--documenter-dark h5 .docs-heading-anchor:hover, html.theme--documenter-dark h5 .docs-heading-anchor:visited, html.theme--documenter-dark h6 .docs-heading-anchor, html.theme--documenter-dark h6 .docs-heading-anchor:hover, html.theme--documenter-dark h6 .docs-heading-anchor:visited { - color: #f2f2f2; } - html.theme--documenter-dark h1 .docs-heading-anchor-permalink, html.theme--documenter-dark h2 .docs-heading-anchor-permalink, html.theme--documenter-dark h3 .docs-heading-anchor-permalink, html.theme--documenter-dark h4 .docs-heading-anchor-permalink, html.theme--documenter-dark h5 .docs-heading-anchor-permalink, html.theme--documenter-dark h6 .docs-heading-anchor-permalink { - visibility: hidden; - vertical-align: middle; - margin-left: 0.5em; - font-size: 0.7rem; } - html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f0c1"; } - html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink { - visibility: visible; } - html.theme--documenter-dark .docs-light-only { - display: none !important; } - html.theme--documenter-dark .admonition { - background-color: #282f2f; - border-style: solid; - border-width: 1px; - border-color: #5e6d6f; - border-radius: 0.4em; - font-size: 15px; } - html.theme--documenter-dark .admonition strong { - color: currentColor; } - html.theme--documenter-dark .admonition.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.admonition { - font-size: 0.85em; } - html.theme--documenter-dark .admonition.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .admonition.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .admonition.is-default { - background-color: #282f2f; - border-color: #5e6d6f; } - html.theme--documenter-dark .admonition.is-default > .admonition-header { - background-color: #5e6d6f; } - html.theme--documenter-dark .admonition.is-info { - background-color: #282f2f; - border-color: #024c7d; } - html.theme--documenter-dark .admonition.is-info > .admonition-header { - background-color: #024c7d; } - html.theme--documenter-dark .admonition.is-success { - background-color: #282f2f; - border-color: #008438; } - html.theme--documenter-dark .admonition.is-success > .admonition-header { - background-color: #008438; } - html.theme--documenter-dark .admonition.is-warning { - background-color: #282f2f; - border-color: #ad8100; } - html.theme--documenter-dark .admonition.is-warning > .admonition-header { - background-color: #ad8100; } - html.theme--documenter-dark .admonition.is-danger { - background-color: #282f2f; - border-color: #9e1b0d; } - html.theme--documenter-dark .admonition.is-danger > .admonition-header { - background-color: #9e1b0d; } - html.theme--documenter-dark .admonition.is-compat { - background-color: #282f2f; - border-color: #137886; } - html.theme--documenter-dark .admonition.is-compat > .admonition-header { - background-color: #137886; } - html.theme--documenter-dark .admonition-header { - background-color: #5e6d6f; - align-items: center; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - html.theme--documenter-dark .admonition-header:before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - margin-right: 0.75em; - content: "\f06a"; } - html.theme--documenter-dark .admonition-body { - color: #fff; - padding: 1em 1.25em; } - html.theme--documenter-dark .admonition-body pre { - background-color: #282f2f; } - html.theme--documenter-dark .admonition-body code { - background-color: rgba(255, 255, 255, 0.05); } - html.theme--documenter-dark .docstring { - margin-bottom: 1em; - background-color: transparent; - border: 1px solid #5e6d6f; - box-shadow: none; - max-width: 100%; } - html.theme--documenter-dark .docstring > header { - display: flex; - flex-grow: 1; - align-items: stretch; - padding: 0.75rem; - background-color: #282f2f; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - box-shadow: none; - border-bottom: 1px solid #5e6d6f; } - html.theme--documenter-dark .docstring > header code { - background-color: transparent; } - html.theme--documenter-dark .docstring > header .docstring-binding { - margin-right: 0.3em; } - html.theme--documenter-dark .docstring > header .docstring-category { - margin-left: 0.3em; } - html.theme--documenter-dark .docstring > section { - position: relative; - padding: 1rem 1.25rem; - border-bottom: 1px solid #5e6d6f; } - html.theme--documenter-dark .docstring > section:last-child { - border-bottom: none; } - html.theme--documenter-dark .docstring > section > a.docs-sourcelink { - transition: opacity 0.3s; - opacity: 0; - position: absolute; - right: 0.625rem; - bottom: 0.5rem; } - html.theme--documenter-dark .docstring:hover > section > a.docs-sourcelink { - opacity: 0.2; } - html.theme--documenter-dark .docstring > section:hover a.docs-sourcelink { - opacity: 1; } - html.theme--documenter-dark .content pre { - border: 1px solid #5e6d6f; } - html.theme--documenter-dark .content code { - font-weight: inherit; } - html.theme--documenter-dark .content a code { - color: #1abc9c; } - html.theme--documenter-dark .content h1 code, html.theme--documenter-dark .content h2 code, html.theme--documenter-dark .content h3 code, html.theme--documenter-dark .content h4 code, html.theme--documenter-dark .content h5 code, html.theme--documenter-dark .content h6 code { - color: #f2f2f2; } - html.theme--documenter-dark .content table { - display: block; - width: initial; - max-width: 100%; - overflow-x: auto; } - html.theme--documenter-dark .content blockquote > ul:first-child, html.theme--documenter-dark .content blockquote > ol:first-child, html.theme--documenter-dark .content .admonition-body > ul:first-child, html.theme--documenter-dark .content .admonition-body > ol:first-child { - margin-top: 0; } - html.theme--documenter-dark .breadcrumb a.is-disabled { - cursor: default; - pointer-events: none; } - html.theme--documenter-dark .breadcrumb a.is-disabled, html.theme--documenter-dark .breadcrumb a.is-disabled:hover { - color: #f2f2f2; } - html.theme--documenter-dark .hljs { - background: initial !important; - padding: initial !important; } - html.theme--documenter-dark .katex .katex-mathml { - top: 0; - right: 0; } - html.theme--documenter-dark html { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; } - html.theme--documenter-dark #documenter .docs-main > article { - overflow-wrap: break-word; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-main { - max-width: 52rem; - margin-left: 20rem; - padding-right: 1rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-main { - width: 100%; } - html.theme--documenter-dark #documenter .docs-main > article { - max-width: 52rem; - margin-left: auto; - margin-right: auto; - margin-bottom: 1rem; - padding: 0 1rem; } - html.theme--documenter-dark #documenter .docs-main > header, html.theme--documenter-dark #documenter .docs-main > nav { - max-width: 100%; - width: 100%; - margin: 0; } } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar { - background-color: #1f2424; - border-bottom: 1px solid #5e6d6f; - z-index: 2; - min-height: 4rem; - margin-bottom: 1rem; - display: flex; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb { - flex-grow: 1; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right { - display: flex; - white-space: nowrap; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - display: inline-block; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label { - padding: 0; - margin-left: 0.3em; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { - margin: auto 0 auto 1rem; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - font-size: 1.5rem; - margin: auto 0 auto 1rem; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar > * { - margin: auto 0; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-main header.docs-navbar { - position: sticky; - top: 0; - padding: 0 1rem; - /* For Headroom.js */ - transition-property: top, box-shadow; - -webkit-transition-property: top, box-shadow; - /* Safari */ - transition-duration: 0.3s; - -webkit-transition-duration: 0.3s; - /* Safari */ } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top { - box-shadow: 0.2rem 0rem 0.4rem #171717; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { - top: -4.5rem; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } } - html.theme--documenter-dark #documenter .docs-main section.footnotes { - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child, html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child { - margin-right: 1em; - margin-bottom: 0.4em; } - html.theme--documenter-dark #documenter .docs-main .docs-footer { - display: flex; - margin-left: 0; - margin-right: 0; - border-top: 1px solid #5e6d6f; - padding-top: 1rem; - padding-bottom: 1rem; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-main .docs-footer { - padding-left: 1rem; - padding-right: 1rem; } } - html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage, html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage { - flex-grow: 1; } - html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage { - text-align: right; } - html.theme--documenter-dark #documenter .docs-sidebar { - display: flex; - flex-direction: column; - color: #fff; - background-color: #282f2f; - border-right: 1px solid #5e6d6f; - padding: 0; - flex: 0 0 18rem; - z-index: 5; - position: fixed; - left: -18rem; - width: 18rem; - height: 100%; - transition: left 0.3s; - /* Setting up a nicer theme style for the scrollbar */ } - html.theme--documenter-dark #documenter .docs-sidebar.visible { - left: 0; - box-shadow: 0.4rem 0rem 0.8rem #171717; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-sidebar.visible { - box-shadow: none; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-sidebar { - left: 0; - top: 0; } } - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo { - margin-top: 1rem; - padding: 0 1rem; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { - max-height: 6rem; - margin: auto; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name { - flex-shrink: 0; - font-size: 1.5rem; - font-weight: 700; - text-align: center; - white-space: nowrap; - overflow: hidden; - padding: 0.5rem 0; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit { - max-width: 16.2rem; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector { - border-top: 1px solid #5e6d6f; - display: none; - padding: 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible { - display: flex; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { - flex-grow: 1; - user-select: none; - font-size: 15px; - border-top: 1px solid #5e6d6f; - padding-bottom: 1.5rem; - /* Managing collapsible submenus */ } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li > .tocitem { - font-weight: bold; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li li { - font-size: 14.25px; - margin-left: 1em; - border-left: 1px solid #5e6d6f; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { - display: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed { - display: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { - display: block; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem { - display: flex; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { - flex-grow: 2; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - font-size: 11.25px; - margin-left: 1rem; - margin-top: auto; - margin-bottom: auto; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f054"; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { - content: "\f078"; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem { - display: block; - padding: 0.5rem 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover { - color: #fff; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { - background-color: #32393a; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active { - border-top: 1px solid #718385; - border-bottom: 1px solid #5e6d6f; - background-color: #1f2424; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active > .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active > .tocitem:hover { - background-color: #1f2424; - color: #fff; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { - border-top: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal { - margin: 0 0.5rem 0.5rem; - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li { - font-size: 12.75px; - border-left: none; - margin-left: 0; - margin-top: 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { - width: 100%; - padding: 0; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { - content: "⚬"; - margin-right: 0.4em; } - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search { - margin: auto; - margin-top: 0.5rem; - margin-bottom: 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { - width: 14.4rem; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { - width: .3rem; - background: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #3b4445; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { - background: #4e5a5c; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-sidebar { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar { - width: .3rem; - background: none; } - html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #3b4445; } - html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { - background: #4e5a5c; } } - html.theme--documenter-dark #documenter .docs-main #documenter-search-info { - margin-bottom: 1rem; } - html.theme--documenter-dark #documenter .docs-main #documenter-search-results { - list-style-type: circle; - list-style-position: outside; } - html.theme--documenter-dark #documenter .docs-main #documenter-search-results li { - margin-left: 2rem; } - html.theme--documenter-dark #documenter .docs-main #documenter-search-results .docs-highlight { - background-color: yellow; } - html.theme--documenter-dark { - background-color: #1f2424; - font-size: 16px; - min-width: 300px; - overflow-x: auto; - overflow-y: scroll; - text-rendering: optimizeLegibility; - text-size-adjust: 100%; } - html.theme--documenter-dark .hljs-comment, - html.theme--documenter-dark .hljs-quote { - color: #d4d0ab; } - html.theme--documenter-dark .hljs-variable, - html.theme--documenter-dark .hljs-template-variable, - html.theme--documenter-dark .hljs-tag, - html.theme--documenter-dark .hljs-name, - html.theme--documenter-dark .hljs-selector-id, - html.theme--documenter-dark .hljs-selector-class, - html.theme--documenter-dark .hljs-regexp, - html.theme--documenter-dark .hljs-deletion { - color: #ffa07a; } - html.theme--documenter-dark .hljs-number, - html.theme--documenter-dark .hljs-built_in, - html.theme--documenter-dark .hljs-builtin-name, - html.theme--documenter-dark .hljs-literal, - html.theme--documenter-dark .hljs-type, - html.theme--documenter-dark .hljs-params, - html.theme--documenter-dark .hljs-meta, - html.theme--documenter-dark .hljs-link { - color: #f5ab35; } - html.theme--documenter-dark .hljs-attribute { - color: #ffd700; } - html.theme--documenter-dark .hljs-string, - html.theme--documenter-dark .hljs-symbol, - html.theme--documenter-dark .hljs-bullet, - html.theme--documenter-dark .hljs-addition { - color: #abe338; } - html.theme--documenter-dark .hljs-title, - html.theme--documenter-dark .hljs-section { - color: #00e0e0; } - html.theme--documenter-dark .hljs-keyword, - html.theme--documenter-dark .hljs-selector-tag { - color: #dcc6e0; } - html.theme--documenter-dark .hljs { - display: block; - overflow-x: auto; - background: #2b2b2b; - color: #f8f8f2; - padding: 0.5em; } - html.theme--documenter-dark .hljs-emphasis { - font-style: italic; } - html.theme--documenter-dark .hljs-strong { - font-weight: bold; } - @media screen and (-ms-high-contrast: active) { - html.theme--documenter-dark .hljs-addition, - html.theme--documenter-dark .hljs-attribute, - html.theme--documenter-dark .hljs-built_in, - html.theme--documenter-dark .hljs-builtin-name, - html.theme--documenter-dark .hljs-bullet, - html.theme--documenter-dark .hljs-comment, - html.theme--documenter-dark .hljs-link, - html.theme--documenter-dark .hljs-literal, - html.theme--documenter-dark .hljs-meta, - html.theme--documenter-dark .hljs-number, - html.theme--documenter-dark .hljs-params, - html.theme--documenter-dark .hljs-string, - html.theme--documenter-dark .hljs-symbol, - html.theme--documenter-dark .hljs-type, - html.theme--documenter-dark .hljs-quote { - color: highlight; } - html.theme--documenter-dark .hljs-keyword, - html.theme--documenter-dark .hljs-selector-tag { - font-weight: bold; } } - html.theme--documenter-dark .hljs-subst { - color: #f8f8f2; } diff --git a/docs/build/assets/themes/documenter-light.css b/docs/build/assets/themes/documenter-light.css deleted file mode 100644 index 200b8315..00000000 --- a/docs/build/assets/themes/documenter-light.css +++ /dev/null @@ -1,7609 +0,0 @@ -@charset "UTF-8"; -/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ -@keyframes spinAround { - from { - transform: rotate(0deg); } - to { - transform: rotate(359deg); } } - -.delete, .modal-close, .is-unselectable, .button, .file, .breadcrumb, .pagination-previous, -.pagination-next, -.pagination-link, -.pagination-ellipsis, .tabs { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after { - border: 3px solid transparent; - border-radius: 2px; - border-right: 0; - border-top: 0; - content: " "; - display: block; - height: 0.625em; - margin-top: -0.4375em; - pointer-events: none; - position: absolute; - top: 50%; - transform: rotate(-45deg); - transform-origin: center; - width: 0.625em; } - -.box:not(:last-child), .content:not(:last-child), .notification:not(:last-child), .progress:not(:last-child), .table:not(:last-child), .table-container:not(:last-child), .title:not(:last-child), -.subtitle:not(:last-child), .block:not(:last-child), .highlight:not(:last-child), .breadcrumb:not(:last-child), .level:not(:last-child), .list:not(:last-child), .message:not(:last-child), .tabs:not(:last-child), .admonition:not(:last-child) { - margin-bottom: 1.5rem; } - -.delete, .modal-close { - -moz-appearance: none; - -webkit-appearance: none; - background-color: rgba(10, 10, 10, 0.2); - border: none; - border-radius: 290486px; - cursor: pointer; - pointer-events: auto; - display: inline-block; - flex-grow: 0; - flex-shrink: 0; - font-size: 0; - height: 20px; - max-height: 20px; - max-width: 20px; - min-height: 20px; - min-width: 20px; - outline: none; - position: relative; - vertical-align: top; - width: 20px; } - .delete::before, .modal-close::before, .delete::after, .modal-close::after { - background-color: white; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - .delete::before, .modal-close::before { - height: 2px; - width: 50%; } - .delete::after, .modal-close::after { - height: 50%; - width: 2px; } - .delete:hover, .modal-close:hover, .delete:focus, .modal-close:focus { - background-color: rgba(10, 10, 10, 0.3); } - .delete:active, .modal-close:active { - background-color: rgba(10, 10, 10, 0.4); } - .is-small.delete, #documenter .docs-sidebar form.docs-search > input.delete, .is-small.modal-close, #documenter .docs-sidebar form.docs-search > input.modal-close { - height: 16px; - max-height: 16px; - max-width: 16px; - min-height: 16px; - min-width: 16px; - width: 16px; } - .is-medium.delete, .is-medium.modal-close { - height: 24px; - max-height: 24px; - max-width: 24px; - min-height: 24px; - min-width: 24px; - width: 24px; } - .is-large.delete, .is-large.modal-close { - height: 32px; - max-height: 32px; - max-width: 32px; - min-height: 32px; - min-width: 32px; - width: 32px; } - -.button.is-loading::after, .loader, .select.is-loading::after, .control.is-loading::after { - animation: spinAround 500ms infinite linear; - border: 2px solid #dbdbdb; - border-radius: 290486px; - border-right-color: transparent; - border-top-color: transparent; - content: ""; - display: block; - height: 1em; - position: relative; - width: 1em; } - -.is-overlay, .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, -.image.is-square .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, -.image.is-1by1 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, -.image.is-5by4 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, -.image.is-4by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, -.image.is-3by2 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, -.image.is-5by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, -.image.is-16by9 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, -.image.is-2by1 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, -.image.is-3by1 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, -.image.is-4by5 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, -.image.is-3by4 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, -.image.is-2by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, -.image.is-3by5 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, -.image.is-9by16 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, -.image.is-1by2 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, -.image.is-1by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, .modal, .modal-background, .hero-video { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; } - -.button, .input, #documenter .docs-sidebar form.docs-search > input, .textarea, .select select, .file-cta, -.file-name, .pagination-previous, -.pagination-next, -.pagination-link, -.pagination-ellipsis { - -moz-appearance: none; - -webkit-appearance: none; - align-items: center; - border: 1px solid transparent; - border-radius: 4px; - box-shadow: none; - display: inline-flex; - font-size: 1rem; - height: 2.25em; - justify-content: flex-start; - line-height: 1.5; - padding-bottom: calc(0.375em - 1px); - padding-left: calc(0.625em - 1px); - padding-right: calc(0.625em - 1px); - padding-top: calc(0.375em - 1px); - position: relative; - vertical-align: top; } - .button:focus, .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .textarea:focus, .select select:focus, .file-cta:focus, - .file-name:focus, .pagination-previous:focus, - .pagination-next:focus, - .pagination-link:focus, - .pagination-ellipsis:focus, .is-focused.button, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-focused.textarea, .select select.is-focused, .is-focused.file-cta, - .is-focused.file-name, .is-focused.pagination-previous, - .is-focused.pagination-next, - .is-focused.pagination-link, - .is-focused.pagination-ellipsis, .button:active, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .textarea:active, .select select:active, .file-cta:active, - .file-name:active, .pagination-previous:active, - .pagination-next:active, - .pagination-link:active, - .pagination-ellipsis:active, .is-active.button, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .is-active.textarea, .select select.is-active, .is-active.file-cta, - .is-active.file-name, .is-active.pagination-previous, - .is-active.pagination-next, - .is-active.pagination-link, - .is-active.pagination-ellipsis { - outline: none; } - .button[disabled], .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], .textarea[disabled], .select select[disabled], .file-cta[disabled], - .file-name[disabled], .pagination-previous[disabled], - .pagination-next[disabled], - .pagination-link[disabled], - .pagination-ellipsis[disabled], - fieldset[disabled] .button, - fieldset[disabled] .input, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, - fieldset[disabled] .textarea, - fieldset[disabled] .select select, - .select fieldset[disabled] select, - fieldset[disabled] .file-cta, - fieldset[disabled] .file-name, - fieldset[disabled] .pagination-previous, - fieldset[disabled] .pagination-next, - fieldset[disabled] .pagination-link, - fieldset[disabled] .pagination-ellipsis { - cursor: not-allowed; } - -/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ -html, -body, -p, -ol, -ul, -li, -dl, -dt, -dd, -blockquote, -figure, -fieldset, -legend, -textarea, -pre, -iframe, -hr, -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0; - padding: 0; } - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: 100%; - font-weight: normal; } - -ul { - list-style: none; } - -button, -input, -select, -textarea { - margin: 0; } - -html { - box-sizing: border-box; } - -*, *::before, *::after { - box-sizing: inherit; } - -img, -embed, -iframe, -object, -video { - height: auto; - max-width: 100%; } - -audio { - max-width: 100%; } - -iframe { - border: 0; } - -table { - border-collapse: collapse; - border-spacing: 0; } - -td, -th { - padding: 0; } - td:not([align]), - th:not([align]) { - text-align: left; } - -html { - background-color: white; - font-size: 16px; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - min-width: 300px; - overflow-x: auto; - overflow-y: scroll; - text-rendering: optimizeLegibility; - text-size-adjust: 100%; } - -article, -aside, -figure, -footer, -header, -hgroup, -section { - display: block; } - -body, -button, -input, -select, -textarea { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } - -code, -pre { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } - -body { - color: #222222; - font-size: 1em; - font-weight: 400; - line-height: 1.5; } - -a { - color: #2e63b8; - cursor: pointer; - text-decoration: none; } - a strong { - color: currentColor; } - a:hover { - color: #363636; } - -code { - background-color: rgba(0, 0, 0, 0.05); - color: #da0b00; - font-size: 0.875em; - font-weight: normal; - padding: 0.1em; } - -hr { - background-color: whitesmoke; - border: none; - display: block; - height: 2px; - margin: 1.5rem 0; } - -img { - height: auto; - max-width: 100%; } - -input[type="checkbox"], -input[type="radio"] { - vertical-align: baseline; } - -small { - font-size: 0.875em; } - -span { - font-style: inherit; - font-weight: inherit; } - -strong { - color: #222222; - font-weight: 700; } - -fieldset { - border: none; } - -pre { - -webkit-overflow-scrolling: touch; - background-color: whitesmoke; - color: #222222; - font-size: 0.875em; - overflow-x: auto; - padding: 1.25rem 1.5rem; - white-space: pre; - word-wrap: normal; } - pre code { - background-color: transparent; - color: currentColor; - font-size: 1em; - padding: 0; } - -table td, -table th { - vertical-align: top; } - table td:not([align]), - table th:not([align]) { - text-align: left; } - -table th { - color: #222222; } - -.is-clearfix::after { - clear: both; - content: " "; - display: table; } - -.is-pulled-left { - float: left !important; } - -.is-pulled-right { - float: right !important; } - -.is-clipped { - overflow: hidden !important; } - -.is-size-1 { - font-size: 3rem !important; } - -.is-size-2 { - font-size: 2.5rem !important; } - -.is-size-3 { - font-size: 2rem !important; } - -.is-size-4 { - font-size: 1.5rem !important; } - -.is-size-5 { - font-size: 1.25rem !important; } - -.is-size-6 { - font-size: 1rem !important; } - -.is-size-7, .docstring > section > a.docs-sourcelink { - font-size: 0.75rem !important; } - -@media screen and (max-width: 768px) { - .is-size-1-mobile { - font-size: 3rem !important; } - .is-size-2-mobile { - font-size: 2.5rem !important; } - .is-size-3-mobile { - font-size: 2rem !important; } - .is-size-4-mobile { - font-size: 1.5rem !important; } - .is-size-5-mobile { - font-size: 1.25rem !important; } - .is-size-6-mobile { - font-size: 1rem !important; } - .is-size-7-mobile { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 769px), print { - .is-size-1-tablet { - font-size: 3rem !important; } - .is-size-2-tablet { - font-size: 2.5rem !important; } - .is-size-3-tablet { - font-size: 2rem !important; } - .is-size-4-tablet { - font-size: 1.5rem !important; } - .is-size-5-tablet { - font-size: 1.25rem !important; } - .is-size-6-tablet { - font-size: 1rem !important; } - .is-size-7-tablet { - font-size: 0.75rem !important; } } - -@media screen and (max-width: 1055px) { - .is-size-1-touch { - font-size: 3rem !important; } - .is-size-2-touch { - font-size: 2.5rem !important; } - .is-size-3-touch { - font-size: 2rem !important; } - .is-size-4-touch { - font-size: 1.5rem !important; } - .is-size-5-touch { - font-size: 1.25rem !important; } - .is-size-6-touch { - font-size: 1rem !important; } - .is-size-7-touch { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 1056px) { - .is-size-1-desktop { - font-size: 3rem !important; } - .is-size-2-desktop { - font-size: 2.5rem !important; } - .is-size-3-desktop { - font-size: 2rem !important; } - .is-size-4-desktop { - font-size: 1.5rem !important; } - .is-size-5-desktop { - font-size: 1.25rem !important; } - .is-size-6-desktop { - font-size: 1rem !important; } - .is-size-7-desktop { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 1216px) { - .is-size-1-widescreen { - font-size: 3rem !important; } - .is-size-2-widescreen { - font-size: 2.5rem !important; } - .is-size-3-widescreen { - font-size: 2rem !important; } - .is-size-4-widescreen { - font-size: 1.5rem !important; } - .is-size-5-widescreen { - font-size: 1.25rem !important; } - .is-size-6-widescreen { - font-size: 1rem !important; } - .is-size-7-widescreen { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 1408px) { - .is-size-1-fullhd { - font-size: 3rem !important; } - .is-size-2-fullhd { - font-size: 2.5rem !important; } - .is-size-3-fullhd { - font-size: 2rem !important; } - .is-size-4-fullhd { - font-size: 1.5rem !important; } - .is-size-5-fullhd { - font-size: 1.25rem !important; } - .is-size-6-fullhd { - font-size: 1rem !important; } - .is-size-7-fullhd { - font-size: 0.75rem !important; } } - -.has-text-centered { - text-align: center !important; } - -.has-text-justified { - text-align: justify !important; } - -.has-text-left { - text-align: left !important; } - -.has-text-right { - text-align: right !important; } - -@media screen and (max-width: 768px) { - .has-text-centered-mobile { - text-align: center !important; } } - -@media screen and (min-width: 769px), print { - .has-text-centered-tablet { - text-align: center !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-centered-tablet-only { - text-align: center !important; } } - -@media screen and (max-width: 1055px) { - .has-text-centered-touch { - text-align: center !important; } } - -@media screen and (min-width: 1056px) { - .has-text-centered-desktop { - text-align: center !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-centered-desktop-only { - text-align: center !important; } } - -@media screen and (min-width: 1216px) { - .has-text-centered-widescreen { - text-align: center !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-centered-widescreen-only { - text-align: center !important; } } - -@media screen and (min-width: 1408px) { - .has-text-centered-fullhd { - text-align: center !important; } } - -@media screen and (max-width: 768px) { - .has-text-justified-mobile { - text-align: justify !important; } } - -@media screen and (min-width: 769px), print { - .has-text-justified-tablet { - text-align: justify !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-justified-tablet-only { - text-align: justify !important; } } - -@media screen and (max-width: 1055px) { - .has-text-justified-touch { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) { - .has-text-justified-desktop { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-justified-desktop-only { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) { - .has-text-justified-widescreen { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-justified-widescreen-only { - text-align: justify !important; } } - -@media screen and (min-width: 1408px) { - .has-text-justified-fullhd { - text-align: justify !important; } } - -@media screen and (max-width: 768px) { - .has-text-left-mobile { - text-align: left !important; } } - -@media screen and (min-width: 769px), print { - .has-text-left-tablet { - text-align: left !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-left-tablet-only { - text-align: left !important; } } - -@media screen and (max-width: 1055px) { - .has-text-left-touch { - text-align: left !important; } } - -@media screen and (min-width: 1056px) { - .has-text-left-desktop { - text-align: left !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-left-desktop-only { - text-align: left !important; } } - -@media screen and (min-width: 1216px) { - .has-text-left-widescreen { - text-align: left !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-left-widescreen-only { - text-align: left !important; } } - -@media screen and (min-width: 1408px) { - .has-text-left-fullhd { - text-align: left !important; } } - -@media screen and (max-width: 768px) { - .has-text-right-mobile { - text-align: right !important; } } - -@media screen and (min-width: 769px), print { - .has-text-right-tablet { - text-align: right !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-right-tablet-only { - text-align: right !important; } } - -@media screen and (max-width: 1055px) { - .has-text-right-touch { - text-align: right !important; } } - -@media screen and (min-width: 1056px) { - .has-text-right-desktop { - text-align: right !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-right-desktop-only { - text-align: right !important; } } - -@media screen and (min-width: 1216px) { - .has-text-right-widescreen { - text-align: right !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-right-widescreen-only { - text-align: right !important; } } - -@media screen and (min-width: 1408px) { - .has-text-right-fullhd { - text-align: right !important; } } - -.is-capitalized { - text-transform: capitalize !important; } - -.is-lowercase { - text-transform: lowercase !important; } - -.is-uppercase { - text-transform: uppercase !important; } - -.is-italic { - font-style: italic !important; } - -.has-text-white { - color: white !important; } - -a.has-text-white:hover, a.has-text-white:focus { - color: #e6e6e6 !important; } - -.has-background-white { - background-color: white !important; } - -.has-text-black { - color: #0a0a0a !important; } - -a.has-text-black:hover, a.has-text-black:focus { - color: black !important; } - -.has-background-black { - background-color: #0a0a0a !important; } - -.has-text-light { - color: whitesmoke !important; } - -a.has-text-light:hover, a.has-text-light:focus { - color: #dbdbdb !important; } - -.has-background-light { - background-color: whitesmoke !important; } - -.has-text-dark { - color: #363636 !important; } - -a.has-text-dark:hover, a.has-text-dark:focus { - color: #1c1c1c !important; } - -.has-background-dark { - background-color: #363636 !important; } - -.has-text-primary { - color: #4eb5de !important; } - -a.has-text-primary:hover, a.has-text-primary:focus { - color: #27a1d2 !important; } - -.has-background-primary { - background-color: #4eb5de !important; } - -.has-text-link { - color: #2e63b8 !important; } - -a.has-text-link:hover, a.has-text-link:focus { - color: #244d8f !important; } - -.has-background-link { - background-color: #2e63b8 !important; } - -.has-text-info { - color: #209cee !important; } - -a.has-text-info:hover, a.has-text-info:focus { - color: #0f81cc !important; } - -.has-background-info { - background-color: #209cee !important; } - -.has-text-success { - color: #22c35b !important; } - -a.has-text-success:hover, a.has-text-success:focus { - color: #1a9847 !important; } - -.has-background-success { - background-color: #22c35b !important; } - -.has-text-warning { - color: #ffdd57 !important; } - -a.has-text-warning:hover, a.has-text-warning:focus { - color: #ffd324 !important; } - -.has-background-warning { - background-color: #ffdd57 !important; } - -.has-text-danger { - color: #da0b00 !important; } - -a.has-text-danger:hover, a.has-text-danger:focus { - color: #a70800 !important; } - -.has-background-danger { - background-color: #da0b00 !important; } - -.has-text-black-bis { - color: #121212 !important; } - -.has-background-black-bis { - background-color: #121212 !important; } - -.has-text-black-ter { - color: #242424 !important; } - -.has-background-black-ter { - background-color: #242424 !important; } - -.has-text-grey-darker { - color: #363636 !important; } - -.has-background-grey-darker { - background-color: #363636 !important; } - -.has-text-grey-dark { - color: #4a4a4a !important; } - -.has-background-grey-dark { - background-color: #4a4a4a !important; } - -.has-text-grey { - color: #7a7a7a !important; } - -.has-background-grey { - background-color: #7a7a7a !important; } - -.has-text-grey-light { - color: #b5b5b5 !important; } - -.has-background-grey-light { - background-color: #b5b5b5 !important; } - -.has-text-grey-lighter { - color: #dbdbdb !important; } - -.has-background-grey-lighter { - background-color: #dbdbdb !important; } - -.has-text-white-ter { - color: whitesmoke !important; } - -.has-background-white-ter { - background-color: whitesmoke !important; } - -.has-text-white-bis { - color: #fafafa !important; } - -.has-background-white-bis { - background-color: #fafafa !important; } - -.has-text-weight-light { - font-weight: 300 !important; } - -.has-text-weight-normal { - font-weight: 400 !important; } - -.has-text-weight-medium { - font-weight: 500 !important; } - -.has-text-weight-semibold { - font-weight: 600 !important; } - -.has-text-weight-bold { - font-weight: 700 !important; } - -.is-family-primary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-secondary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-sans-serif { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-monospace { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-family-code { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-block { - display: block !important; } - -@media screen and (max-width: 768px) { - .is-block-mobile { - display: block !important; } } - -@media screen and (min-width: 769px), print { - .is-block-tablet { - display: block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-block-tablet-only { - display: block !important; } } - -@media screen and (max-width: 1055px) { - .is-block-touch { - display: block !important; } } - -@media screen and (min-width: 1056px) { - .is-block-desktop { - display: block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-block-desktop-only { - display: block !important; } } - -@media screen and (min-width: 1216px) { - .is-block-widescreen { - display: block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-block-widescreen-only { - display: block !important; } } - -@media screen and (min-width: 1408px) { - .is-block-fullhd { - display: block !important; } } - -.is-flex { - display: flex !important; } - -@media screen and (max-width: 768px) { - .is-flex-mobile { - display: flex !important; } } - -@media screen and (min-width: 769px), print { - .is-flex-tablet { - display: flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-flex-tablet-only { - display: flex !important; } } - -@media screen and (max-width: 1055px) { - .is-flex-touch { - display: flex !important; } } - -@media screen and (min-width: 1056px) { - .is-flex-desktop { - display: flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-flex-desktop-only { - display: flex !important; } } - -@media screen and (min-width: 1216px) { - .is-flex-widescreen { - display: flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-flex-widescreen-only { - display: flex !important; } } - -@media screen and (min-width: 1408px) { - .is-flex-fullhd { - display: flex !important; } } - -.is-inline { - display: inline !important; } - -@media screen and (max-width: 768px) { - .is-inline-mobile { - display: inline !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-tablet { - display: inline !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-tablet-only { - display: inline !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-touch { - display: inline !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-desktop { - display: inline !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-desktop-only { - display: inline !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-widescreen { - display: inline !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-widescreen-only { - display: inline !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-fullhd { - display: inline !important; } } - -.is-inline-block { - display: inline-block !important; } - -@media screen and (max-width: 768px) { - .is-inline-block-mobile { - display: inline-block !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-block-tablet { - display: inline-block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-block-tablet-only { - display: inline-block !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-block-touch { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-block-desktop { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-block-desktop-only { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-block-widescreen { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-block-widescreen-only { - display: inline-block !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-block-fullhd { - display: inline-block !important; } } - -.is-inline-flex { - display: inline-flex !important; } - -@media screen and (max-width: 768px) { - .is-inline-flex-mobile { - display: inline-flex !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-flex-tablet { - display: inline-flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-flex-tablet-only { - display: inline-flex !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-flex-touch { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-flex-desktop { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-flex-desktop-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-flex-widescreen { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-flex-widescreen-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-flex-fullhd { - display: inline-flex !important; } } - -.is-hidden { - display: none !important; } - -.is-sr-only { - border: none !important; - clip: rect(0, 0, 0, 0) !important; - height: 0.01em !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - white-space: nowrap !important; - width: 0.01em !important; } - -@media screen and (max-width: 768px) { - .is-hidden-mobile { - display: none !important; } } - -@media screen and (min-width: 769px), print { - .is-hidden-tablet { - display: none !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-hidden-tablet-only { - display: none !important; } } - -@media screen and (max-width: 1055px) { - .is-hidden-touch { - display: none !important; } } - -@media screen and (min-width: 1056px) { - .is-hidden-desktop { - display: none !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-hidden-desktop-only { - display: none !important; } } - -@media screen and (min-width: 1216px) { - .is-hidden-widescreen { - display: none !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-hidden-widescreen-only { - display: none !important; } } - -@media screen and (min-width: 1408px) { - .is-hidden-fullhd { - display: none !important; } } - -.is-invisible { - visibility: hidden !important; } - -@media screen and (max-width: 768px) { - .is-invisible-mobile { - visibility: hidden !important; } } - -@media screen and (min-width: 769px), print { - .is-invisible-tablet { - visibility: hidden !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-invisible-tablet-only { - visibility: hidden !important; } } - -@media screen and (max-width: 1055px) { - .is-invisible-touch { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) { - .is-invisible-desktop { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-invisible-desktop-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) { - .is-invisible-widescreen { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-invisible-widescreen-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1408px) { - .is-invisible-fullhd { - visibility: hidden !important; } } - -.is-marginless { - margin: 0 !important; } - -.is-paddingless { - padding: 0 !important; } - -.is-radiusless { - border-radius: 0 !important; } - -.is-shadowless { - box-shadow: none !important; } - -.is-relative { - position: relative !important; } - -.box { - background-color: white; - border-radius: 6px; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - color: #222222; - display: block; - padding: 1.25rem; } - -a.box:hover, a.box:focus { - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #2e63b8; } - -a.box:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #2e63b8; } - -.button { - background-color: white; - border-color: #dbdbdb; - border-width: 1px; - color: #363636; - cursor: pointer; - justify-content: center; - padding-bottom: calc(0.375em - 1px); - padding-left: 0.75em; - padding-right: 0.75em; - padding-top: calc(0.375em - 1px); - text-align: center; - white-space: nowrap; } - .button strong { - color: inherit; } - .button .icon, .button .icon.is-small, .button #documenter .docs-sidebar form.docs-search > input.icon, #documenter .docs-sidebar .button form.docs-search > input.icon, .button .icon.is-medium, .button .icon.is-large { - height: 1.5em; - width: 1.5em; } - .button .icon:first-child:not(:last-child) { - margin-left: calc(-0.375em - 1px); - margin-right: 0.1875em; } - .button .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: calc(-0.375em - 1px); } - .button .icon:first-child:last-child { - margin-left: calc(-0.375em - 1px); - margin-right: calc(-0.375em - 1px); } - .button:hover, .button.is-hovered { - border-color: #b5b5b5; - color: #363636; } - .button:focus, .button.is-focused { - border-color: #2e63b8; - color: #363636; } - .button:focus:not(:active), .button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .button:active, .button.is-active { - border-color: #4a4a4a; - color: #363636; } - .button.is-text { - background-color: transparent; - border-color: transparent; - color: #222222; - text-decoration: underline; } - .button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused { - background-color: whitesmoke; - color: #222222; } - .button.is-text:active, .button.is-text.is-active { - background-color: #e8e8e8; - color: #222222; } - .button.is-text[disabled], - fieldset[disabled] .button.is-text { - background-color: transparent; - border-color: transparent; - box-shadow: none; } - .button.is-white { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - .button.is-white:hover, .button.is-white.is-hovered { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - .button.is-white:focus, .button.is-white.is-focused { - border-color: transparent; - color: #0a0a0a; } - .button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - .button.is-white:active, .button.is-white.is-active { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - .button.is-white[disabled], - fieldset[disabled] .button.is-white { - background-color: white; - border-color: transparent; - box-shadow: none; } - .button.is-white.is-inverted { - background-color: #0a0a0a; - color: white; } - .button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered { - background-color: black; } - .button.is-white.is-inverted[disabled], - fieldset[disabled] .button.is-white.is-inverted { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; - color: white; } - .button.is-white.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - .button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused { - background-color: white; - border-color: white; - color: #0a0a0a; } - .button.is-white.is-outlined.is-loading::after { - border-color: transparent transparent white white !important; } - .button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-white.is-outlined[disabled], - fieldset[disabled] .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - .button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused { - background-color: #0a0a0a; - color: white; } - .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - .button.is-white.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - .button.is-black:hover, .button.is-black.is-hovered { - background-color: #040404; - border-color: transparent; - color: white; } - .button.is-black:focus, .button.is-black.is-focused { - border-color: transparent; - color: white; } - .button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - .button.is-black:active, .button.is-black.is-active { - background-color: black; - border-color: transparent; - color: white; } - .button.is-black[disabled], - fieldset[disabled] .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; } - .button.is-black.is-inverted { - background-color: white; - color: #0a0a0a; } - .button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-black.is-inverted[disabled], - fieldset[disabled] .button.is-black.is-inverted { - background-color: white; - border-color: transparent; - box-shadow: none; - color: #0a0a0a; } - .button.is-black.is-loading::after { - border-color: transparent transparent white white !important; } - .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - .button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - .button.is-black.is-outlined.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - .button.is-black.is-outlined[disabled], - fieldset[disabled] .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - .button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused { - background-color: white; - color: #0a0a0a; } - .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-black.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - .button.is-light { - background-color: whitesmoke; - border-color: transparent; - color: #363636; } - .button.is-light:hover, .button.is-light.is-hovered { - background-color: #eeeeee; - border-color: transparent; - color: #363636; } - .button.is-light:focus, .button.is-light.is-focused { - border-color: transparent; - color: #363636; } - .button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } - .button.is-light:active, .button.is-light.is-active { - background-color: #e8e8e8; - border-color: transparent; - color: #363636; } - .button.is-light[disabled], - fieldset[disabled] .button.is-light { - background-color: whitesmoke; - border-color: transparent; - box-shadow: none; } - .button.is-light.is-inverted { - background-color: #363636; - color: whitesmoke; } - .button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered { - background-color: #292929; } - .button.is-light.is-inverted[disabled], - fieldset[disabled] .button.is-light.is-inverted { - background-color: #363636; - border-color: transparent; - box-shadow: none; - color: whitesmoke; } - .button.is-light.is-loading::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-light.is-outlined { - background-color: transparent; - border-color: whitesmoke; - color: whitesmoke; } - .button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused { - background-color: whitesmoke; - border-color: whitesmoke; - color: #363636; } - .button.is-light.is-outlined.is-loading::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-light.is-outlined[disabled], - fieldset[disabled] .button.is-light.is-outlined { - background-color: transparent; - border-color: whitesmoke; - box-shadow: none; - color: whitesmoke; } - .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #363636; - color: #363636; } - .button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused { - background-color: #363636; - color: whitesmoke; } - .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-light.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #363636; - box-shadow: none; - color: #363636; } - .button.is-dark, .content kbd.button { - background-color: #363636; - border-color: transparent; - color: whitesmoke; } - .button.is-dark:hover, .content kbd.button:hover, .button.is-dark.is-hovered, .content kbd.button.is-hovered { - background-color: #2f2f2f; - border-color: transparent; - color: whitesmoke; } - .button.is-dark:focus, .content kbd.button:focus, .button.is-dark.is-focused, .content kbd.button.is-focused { - border-color: transparent; - color: whitesmoke; } - .button.is-dark:focus:not(:active), .content kbd.button:focus:not(:active), .button.is-dark.is-focused:not(:active), .content kbd.button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } - .button.is-dark:active, .content kbd.button:active, .button.is-dark.is-active, .content kbd.button.is-active { - background-color: #292929; - border-color: transparent; - color: whitesmoke; } - .button.is-dark[disabled], .content kbd.button[disabled], - fieldset[disabled] .button.is-dark, - fieldset[disabled] .content kbd.button, - .content fieldset[disabled] kbd.button { - background-color: #363636; - border-color: transparent; - box-shadow: none; } - .button.is-dark.is-inverted, .content kbd.button.is-inverted { - background-color: whitesmoke; - color: #363636; } - .button.is-dark.is-inverted:hover, .content kbd.button.is-inverted:hover, .button.is-dark.is-inverted.is-hovered, .content kbd.button.is-inverted.is-hovered { - background-color: #e8e8e8; } - .button.is-dark.is-inverted[disabled], .content kbd.button.is-inverted[disabled], - fieldset[disabled] .button.is-dark.is-inverted, - fieldset[disabled] .content kbd.button.is-inverted, - .content fieldset[disabled] kbd.button.is-inverted { - background-color: whitesmoke; - border-color: transparent; - box-shadow: none; - color: #363636; } - .button.is-dark.is-loading::after, .content kbd.button.is-loading::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-dark.is-outlined, .content kbd.button.is-outlined { - background-color: transparent; - border-color: #363636; - color: #363636; } - .button.is-dark.is-outlined:hover, .content kbd.button.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .content kbd.button.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .content kbd.button.is-outlined:focus, .button.is-dark.is-outlined.is-focused, .content kbd.button.is-outlined.is-focused { - background-color: #363636; - border-color: #363636; - color: whitesmoke; } - .button.is-dark.is-outlined.is-loading::after, .content kbd.button.is-outlined.is-loading::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-dark.is-outlined.is-loading:hover::after, .content kbd.button.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .content kbd.button.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after, .content kbd.button.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-dark.is-outlined[disabled], .content kbd.button.is-outlined[disabled], - fieldset[disabled] .button.is-dark.is-outlined, - fieldset[disabled] .content kbd.button.is-outlined, - .content fieldset[disabled] kbd.button.is-outlined { - background-color: transparent; - border-color: #363636; - box-shadow: none; - color: #363636; } - .button.is-dark.is-inverted.is-outlined, .content kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: whitesmoke; - color: whitesmoke; } - .button.is-dark.is-inverted.is-outlined:hover, .content kbd.button.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .content kbd.button.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .content kbd.button.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused, .content kbd.button.is-inverted.is-outlined.is-focused { - background-color: whitesmoke; - color: #363636; } - .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-dark.is-inverted.is-outlined[disabled], .content kbd.button.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-dark.is-inverted.is-outlined, - fieldset[disabled] .content kbd.button.is-inverted.is-outlined, - .content fieldset[disabled] kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: whitesmoke; - box-shadow: none; - color: whitesmoke; } - .button.is-primary, .docstring > section > a.button.docs-sourcelink { - background-color: #4eb5de; - border-color: transparent; - color: #fff; } - .button.is-primary:hover, .docstring > section > a.button.docs-sourcelink:hover, .button.is-primary.is-hovered, .docstring > section > a.button.is-hovered.docs-sourcelink { - background-color: #43b1dc; - border-color: transparent; - color: #fff; } - .button.is-primary:focus, .docstring > section > a.button.docs-sourcelink:focus, .button.is-primary.is-focused, .docstring > section > a.button.is-focused.docs-sourcelink { - border-color: transparent; - color: #fff; } - .button.is-primary:focus:not(:active), .docstring > section > a.button.docs-sourcelink:focus:not(:active), .button.is-primary.is-focused:not(:active), .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { - box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } - .button.is-primary:active, .docstring > section > a.button.docs-sourcelink:active, .button.is-primary.is-active, .docstring > section > a.button.is-active.docs-sourcelink { - background-color: #39acda; - border-color: transparent; - color: #fff; } - .button.is-primary[disabled], .docstring > section > a.button.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary, - fieldset[disabled] .docstring > section > a.button.docs-sourcelink { - background-color: #4eb5de; - border-color: transparent; - box-shadow: none; } - .button.is-primary.is-inverted, .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - color: #4eb5de; } - .button.is-primary.is-inverted:hover, .docstring > section > a.button.is-inverted.docs-sourcelink:hover, .button.is-primary.is-inverted.is-hovered, .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { - background-color: #f2f2f2; } - .button.is-primary.is-inverted[disabled], .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary.is-inverted, - fieldset[disabled] .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #4eb5de; } - .button.is-primary.is-loading::after, .docstring > section > a.button.is-loading.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-primary.is-outlined, .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #4eb5de; - color: #4eb5de; } - .button.is-primary.is-outlined:hover, .docstring > section > a.button.is-outlined.docs-sourcelink:hover, .button.is-primary.is-outlined.is-hovered, .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-outlined:focus, .docstring > section > a.button.is-outlined.docs-sourcelink:focus, .button.is-primary.is-outlined.is-focused, .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { - background-color: #4eb5de; - border-color: #4eb5de; - color: #fff; } - .button.is-primary.is-outlined.is-loading::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { - border-color: transparent transparent #4eb5de #4eb5de !important; } - .button.is-primary.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-primary.is-outlined[disabled], .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary.is-outlined, - fieldset[disabled] .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #4eb5de; - box-shadow: none; - color: #4eb5de; } - .button.is-primary.is-inverted.is-outlined, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-primary.is-inverted.is-outlined:hover, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-inverted.is-outlined:focus, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, .button.is-primary.is-inverted.is-outlined.is-focused, .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { - background-color: #fff; - color: #4eb5de; } - .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #4eb5de #4eb5de !important; } - .button.is-primary.is-inverted.is-outlined[disabled], .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary.is-inverted.is-outlined, - fieldset[disabled] .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-link { - background-color: #2e63b8; - border-color: transparent; - color: #fff; } - .button.is-link:hover, .button.is-link.is-hovered { - background-color: #2b5eae; - border-color: transparent; - color: #fff; } - .button.is-link:focus, .button.is-link.is-focused { - border-color: transparent; - color: #fff; } - .button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .button.is-link:active, .button.is-link.is-active { - background-color: #2958a4; - border-color: transparent; - color: #fff; } - .button.is-link[disabled], - fieldset[disabled] .button.is-link { - background-color: #2e63b8; - border-color: transparent; - box-shadow: none; } - .button.is-link.is-inverted { - background-color: #fff; - color: #2e63b8; } - .button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-link.is-inverted[disabled], - fieldset[disabled] .button.is-link.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #2e63b8; } - .button.is-link.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-link.is-outlined { - background-color: transparent; - border-color: #2e63b8; - color: #2e63b8; } - .button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; } - .button.is-link.is-outlined.is-loading::after { - border-color: transparent transparent #2e63b8 #2e63b8 !important; } - .button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-link.is-outlined[disabled], - fieldset[disabled] .button.is-link.is-outlined { - background-color: transparent; - border-color: #2e63b8; - box-shadow: none; - color: #2e63b8; } - .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #2e63b8; } - .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #2e63b8 #2e63b8 !important; } - .button.is-link.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-info { - background-color: #209cee; - border-color: transparent; - color: #fff; } - .button.is-info:hover, .button.is-info.is-hovered { - background-color: #1496ed; - border-color: transparent; - color: #fff; } - .button.is-info:focus, .button.is-info.is-focused { - border-color: transparent; - color: #fff; } - .button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } - .button.is-info:active, .button.is-info.is-active { - background-color: #118fe4; - border-color: transparent; - color: #fff; } - .button.is-info[disabled], - fieldset[disabled] .button.is-info { - background-color: #209cee; - border-color: transparent; - box-shadow: none; } - .button.is-info.is-inverted { - background-color: #fff; - color: #209cee; } - .button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-info.is-inverted[disabled], - fieldset[disabled] .button.is-info.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #209cee; } - .button.is-info.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-info.is-outlined { - background-color: transparent; - border-color: #209cee; - color: #209cee; } - .button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused { - background-color: #209cee; - border-color: #209cee; - color: #fff; } - .button.is-info.is-outlined.is-loading::after { - border-color: transparent transparent #209cee #209cee !important; } - .button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-info.is-outlined[disabled], - fieldset[disabled] .button.is-info.is-outlined { - background-color: transparent; - border-color: #209cee; - box-shadow: none; - color: #209cee; } - .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #209cee; } - .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #209cee #209cee !important; } - .button.is-info.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-success { - background-color: #22c35b; - border-color: transparent; - color: #fff; } - .button.is-success:hover, .button.is-success.is-hovered { - background-color: #20b856; - border-color: transparent; - color: #fff; } - .button.is-success:focus, .button.is-success.is-focused { - border-color: transparent; - color: #fff; } - .button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } - .button.is-success:active, .button.is-success.is-active { - background-color: #1ead51; - border-color: transparent; - color: #fff; } - .button.is-success[disabled], - fieldset[disabled] .button.is-success { - background-color: #22c35b; - border-color: transparent; - box-shadow: none; } - .button.is-success.is-inverted { - background-color: #fff; - color: #22c35b; } - .button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-success.is-inverted[disabled], - fieldset[disabled] .button.is-success.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #22c35b; } - .button.is-success.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-success.is-outlined { - background-color: transparent; - border-color: #22c35b; - color: #22c35b; } - .button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused { - background-color: #22c35b; - border-color: #22c35b; - color: #fff; } - .button.is-success.is-outlined.is-loading::after { - border-color: transparent transparent #22c35b #22c35b !important; } - .button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-success.is-outlined[disabled], - fieldset[disabled] .button.is-success.is-outlined { - background-color: transparent; - border-color: #22c35b; - box-shadow: none; - color: #22c35b; } - .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #22c35b; } - .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #22c35b #22c35b !important; } - .button.is-success.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-warning { - background-color: #ffdd57; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning:hover, .button.is-warning.is-hovered { - background-color: #ffdb4a; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning:focus, .button.is-warning.is-focused { - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } - .button.is-warning:active, .button.is-warning.is-active { - background-color: #ffd83d; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning[disabled], - fieldset[disabled] .button.is-warning { - background-color: #ffdd57; - border-color: transparent; - box-shadow: none; } - .button.is-warning.is-inverted { - background-color: rgba(0, 0, 0, 0.7); - color: #ffdd57; } - .button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered { - background-color: rgba(0, 0, 0, 0.7); } - .button.is-warning.is-inverted[disabled], - fieldset[disabled] .button.is-warning.is-inverted { - background-color: rgba(0, 0, 0, 0.7); - border-color: transparent; - box-shadow: none; - color: #ffdd57; } - .button.is-warning.is-loading::after { - border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } - .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ffdd57; - color: #ffdd57; } - .button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused { - background-color: #ffdd57; - border-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning.is-outlined.is-loading::after { - border-color: transparent transparent #ffdd57 #ffdd57 !important; } - .button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } - .button.is-warning.is-outlined[disabled], - fieldset[disabled] .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ffdd57; - box-shadow: none; - color: #ffdd57; } - .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.7); - color: rgba(0, 0, 0, 0.7); } - .button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused { - background-color: rgba(0, 0, 0, 0.7); - color: #ffdd57; } - .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ffdd57 #ffdd57 !important; } - .button.is-warning.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.7); - box-shadow: none; - color: rgba(0, 0, 0, 0.7); } - .button.is-danger { - background-color: #da0b00; - border-color: transparent; - color: #fff; } - .button.is-danger:hover, .button.is-danger.is-hovered { - background-color: #cd0a00; - border-color: transparent; - color: #fff; } - .button.is-danger:focus, .button.is-danger.is-focused { - border-color: transparent; - color: #fff; } - .button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } - .button.is-danger:active, .button.is-danger.is-active { - background-color: #c10a00; - border-color: transparent; - color: #fff; } - .button.is-danger[disabled], - fieldset[disabled] .button.is-danger { - background-color: #da0b00; - border-color: transparent; - box-shadow: none; } - .button.is-danger.is-inverted { - background-color: #fff; - color: #da0b00; } - .button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-danger.is-inverted[disabled], - fieldset[disabled] .button.is-danger.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #da0b00; } - .button.is-danger.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-danger.is-outlined { - background-color: transparent; - border-color: #da0b00; - color: #da0b00; } - .button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused { - background-color: #da0b00; - border-color: #da0b00; - color: #fff; } - .button.is-danger.is-outlined.is-loading::after { - border-color: transparent transparent #da0b00 #da0b00 !important; } - .button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-danger.is-outlined[disabled], - fieldset[disabled] .button.is-danger.is-outlined { - background-color: transparent; - border-color: #da0b00; - box-shadow: none; - color: #da0b00; } - .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #da0b00; } - .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #da0b00 #da0b00 !important; } - .button.is-danger.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-small, #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 2px; - font-size: 0.75rem; } - .button.is-normal { - font-size: 1rem; } - .button.is-medium { - font-size: 1.25rem; } - .button.is-large { - font-size: 1.5rem; } - .button[disabled], - fieldset[disabled] .button { - background-color: white; - border-color: #dbdbdb; - box-shadow: none; - opacity: 0.5; } - .button.is-fullwidth { - display: flex; - width: 100%; } - .button.is-loading { - color: transparent !important; - pointer-events: none; } - .button.is-loading::after { - position: absolute; - left: calc(50% - (1em / 2)); - top: calc(50% - (1em / 2)); - position: absolute !important; } - .button.is-static { - background-color: whitesmoke; - border-color: #dbdbdb; - color: #7a7a7a; - box-shadow: none; - pointer-events: none; } - .button.is-rounded, #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - -.buttons { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .buttons .button { - margin-bottom: 0.5rem; } - .buttons .button:not(:last-child):not(.is-fullwidth) { - margin-right: 0.5rem; } - .buttons:last-child { - margin-bottom: -0.5rem; } - .buttons:not(:last-child) { - margin-bottom: 1rem; } - .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { - border-radius: 2px; - font-size: 0.75rem; } - .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { - font-size: 1.25rem; } - .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { - font-size: 1.5rem; } - .buttons.has-addons .button:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .buttons.has-addons .button:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - margin-right: -1px; } - .buttons.has-addons .button:last-child { - margin-right: 0; } - .buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered { - z-index: 2; } - .buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected { - z-index: 3; } - .buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover { - z-index: 4; } - .buttons.has-addons .button.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .buttons.is-centered { - justify-content: center; } - .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - .buttons.is-right { - justify-content: flex-end; } - .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - -.container { - flex-grow: 1; - margin: 0 auto; - position: relative; - width: auto; } - @media screen and (min-width: 1056px) { - .container { - max-width: 992px; } - .container.is-fluid { - margin-left: 32px; - margin-right: 32px; - max-width: none; } } - @media screen and (max-width: 1215px) { - .container.is-widescreen { - max-width: 1152px; } } - @media screen and (max-width: 1407px) { - .container.is-fullhd { - max-width: 1344px; } } - @media screen and (min-width: 1216px) { - .container { - max-width: 1152px; } } - @media screen and (min-width: 1408px) { - .container { - max-width: 1344px; } } - -.content li + li { - margin-top: 0.25em; } - -.content p:not(:last-child), -.content dl:not(:last-child), -.content ol:not(:last-child), -.content ul:not(:last-child), -.content blockquote:not(:last-child), -.content pre:not(:last-child), -.content table:not(:last-child) { - margin-bottom: 1em; } - -.content h1, -.content h2, -.content h3, -.content h4, -.content h5, -.content h6 { - color: #222222; - font-weight: 600; - line-height: 1.125; } - -.content h1 { - font-size: 2em; - margin-bottom: 0.5em; } - .content h1:not(:first-child) { - margin-top: 1em; } - -.content h2 { - font-size: 1.75em; - margin-bottom: 0.5714em; } - .content h2:not(:first-child) { - margin-top: 1.1428em; } - -.content h3 { - font-size: 1.5em; - margin-bottom: 0.6666em; } - .content h3:not(:first-child) { - margin-top: 1.3333em; } - -.content h4 { - font-size: 1.25em; - margin-bottom: 0.8em; } - -.content h5 { - font-size: 1.125em; - margin-bottom: 0.8888em; } - -.content h6 { - font-size: 1em; - margin-bottom: 1em; } - -.content blockquote { - background-color: whitesmoke; - border-left: 5px solid #dbdbdb; - padding: 1.25em 1.5em; } - -.content ol { - list-style-position: outside; - margin-left: 2em; - margin-top: 1em; } - .content ol:not([type]) { - list-style-type: decimal; } - .content ol:not([type]).is-lower-alpha { - list-style-type: lower-alpha; } - .content ol:not([type]).is-lower-roman { - list-style-type: lower-roman; } - .content ol:not([type]).is-upper-alpha { - list-style-type: upper-alpha; } - .content ol:not([type]).is-upper-roman { - list-style-type: upper-roman; } - -.content ul { - list-style: disc outside; - margin-left: 2em; - margin-top: 1em; } - .content ul ul { - list-style-type: circle; - margin-top: 0.5em; } - .content ul ul ul { - list-style-type: square; } - -.content dd { - margin-left: 2em; } - -.content figure { - margin-left: 2em; - margin-right: 2em; - text-align: center; } - .content figure:not(:first-child) { - margin-top: 2em; } - .content figure:not(:last-child) { - margin-bottom: 2em; } - .content figure img { - display: inline-block; } - .content figure figcaption { - font-style: italic; } - -.content pre { - -webkit-overflow-scrolling: touch; - overflow-x: auto; - padding: 0.7rem 0.5rem; - white-space: pre; - word-wrap: normal; } - -.content sup, -.content sub { - font-size: 75%; } - -.content table { - width: 100%; } - .content table td, - .content table th { - border: 1px solid #dbdbdb; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - .content table th { - color: #222222; } - .content table th:not([align]) { - text-align: left; } - .content table thead td, - .content table thead th { - border-width: 0 0 2px; - color: #222222; } - .content table tfoot td, - .content table tfoot th { - border-width: 2px 0 0; - color: #222222; } - .content table tbody tr:last-child td, - .content table tbody tr:last-child th { - border-bottom-width: 0; } - -.content .tabs li + li { - margin-top: 0; } - -.content.is-small, #documenter .docs-sidebar form.docs-search > input.content { - font-size: 0.75rem; } - -.content.is-medium { - font-size: 1.25rem; } - -.content.is-large { - font-size: 1.5rem; } - -.icon { - align-items: center; - display: inline-flex; - justify-content: center; - height: 1.5rem; - width: 1.5rem; } - .icon.is-small, #documenter .docs-sidebar form.docs-search > input.icon { - height: 1rem; - width: 1rem; } - .icon.is-medium { - height: 2rem; - width: 2rem; } - .icon.is-large { - height: 3rem; - width: 3rem; } - -.image, #documenter .docs-sidebar .docs-logo > img { - display: block; - position: relative; } - .image img, #documenter .docs-sidebar .docs-logo > img img { - display: block; - height: auto; - width: 100%; } - .image img.is-rounded, #documenter .docs-sidebar .docs-logo > img img.is-rounded { - border-radius: 290486px; } - .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, - .image.is-square .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, - .image.is-1by1 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, - .image.is-5by4 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, - .image.is-4by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, - .image.is-3by2 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, - .image.is-5by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, - .image.is-16by9 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, - .image.is-2by1 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, - .image.is-3by1 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, - .image.is-4by5 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, - .image.is-3by4 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, - .image.is-2by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, - .image.is-3by5 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, - .image.is-9by16 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, - .image.is-1by2 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, - .image.is-1by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { - height: 100%; - width: 100%; } - .image.is-square, #documenter .docs-sidebar .docs-logo > img.is-square, .image.is-1by1, #documenter .docs-sidebar .docs-logo > img.is-1by1 { - padding-top: 100%; } - .image.is-5by4, #documenter .docs-sidebar .docs-logo > img.is-5by4 { - padding-top: 80%; } - .image.is-4by3, #documenter .docs-sidebar .docs-logo > img.is-4by3 { - padding-top: 75%; } - .image.is-3by2, #documenter .docs-sidebar .docs-logo > img.is-3by2 { - padding-top: 66.6666%; } - .image.is-5by3, #documenter .docs-sidebar .docs-logo > img.is-5by3 { - padding-top: 60%; } - .image.is-16by9, #documenter .docs-sidebar .docs-logo > img.is-16by9 { - padding-top: 56.25%; } - .image.is-2by1, #documenter .docs-sidebar .docs-logo > img.is-2by1 { - padding-top: 50%; } - .image.is-3by1, #documenter .docs-sidebar .docs-logo > img.is-3by1 { - padding-top: 33.3333%; } - .image.is-4by5, #documenter .docs-sidebar .docs-logo > img.is-4by5 { - padding-top: 125%; } - .image.is-3by4, #documenter .docs-sidebar .docs-logo > img.is-3by4 { - padding-top: 133.3333%; } - .image.is-2by3, #documenter .docs-sidebar .docs-logo > img.is-2by3 { - padding-top: 150%; } - .image.is-3by5, #documenter .docs-sidebar .docs-logo > img.is-3by5 { - padding-top: 166.6666%; } - .image.is-9by16, #documenter .docs-sidebar .docs-logo > img.is-9by16 { - padding-top: 177.7777%; } - .image.is-1by2, #documenter .docs-sidebar .docs-logo > img.is-1by2 { - padding-top: 200%; } - .image.is-1by3, #documenter .docs-sidebar .docs-logo > img.is-1by3 { - padding-top: 300%; } - .image.is-16x16, #documenter .docs-sidebar .docs-logo > img.is-16x16 { - height: 16px; - width: 16px; } - .image.is-24x24, #documenter .docs-sidebar .docs-logo > img.is-24x24 { - height: 24px; - width: 24px; } - .image.is-32x32, #documenter .docs-sidebar .docs-logo > img.is-32x32 { - height: 32px; - width: 32px; } - .image.is-48x48, #documenter .docs-sidebar .docs-logo > img.is-48x48 { - height: 48px; - width: 48px; } - .image.is-64x64, #documenter .docs-sidebar .docs-logo > img.is-64x64 { - height: 64px; - width: 64px; } - .image.is-96x96, #documenter .docs-sidebar .docs-logo > img.is-96x96 { - height: 96px; - width: 96px; } - .image.is-128x128, #documenter .docs-sidebar .docs-logo > img.is-128x128 { - height: 128px; - width: 128px; } - -.notification { - background-color: whitesmoke; - border-radius: 4px; - padding: 1.25rem 2.5rem 1.25rem 1.5rem; - position: relative; } - .notification a:not(.button):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - .notification strong { - color: currentColor; } - .notification code, - .notification pre { - background: white; } - .notification pre code { - background: transparent; } - .notification > .delete { - position: absolute; - right: 0.5rem; - top: 0.5rem; } - .notification .title, - .notification .subtitle, - .notification .content { - color: currentColor; } - .notification.is-white { - background-color: white; - color: #0a0a0a; } - .notification.is-black { - background-color: #0a0a0a; - color: white; } - .notification.is-light { - background-color: whitesmoke; - color: #363636; } - .notification.is-dark, .content kbd.notification { - background-color: #363636; - color: whitesmoke; } - .notification.is-primary, .docstring > section > a.notification.docs-sourcelink { - background-color: #4eb5de; - color: #fff; } - .notification.is-link { - background-color: #2e63b8; - color: #fff; } - .notification.is-info { - background-color: #209cee; - color: #fff; } - .notification.is-success { - background-color: #22c35b; - color: #fff; } - .notification.is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .notification.is-danger { - background-color: #da0b00; - color: #fff; } - -.progress { - -moz-appearance: none; - -webkit-appearance: none; - border: none; - border-radius: 290486px; - display: block; - height: 1rem; - overflow: hidden; - padding: 0; - width: 100%; } - .progress::-webkit-progress-bar { - background-color: #dbdbdb; } - .progress::-webkit-progress-value { - background-color: #222222; } - .progress::-moz-progress-bar { - background-color: #222222; } - .progress::-ms-fill { - background-color: #222222; - border: none; } - .progress.is-white::-webkit-progress-value { - background-color: white; } - .progress.is-white::-moz-progress-bar { - background-color: white; } - .progress.is-white::-ms-fill { - background-color: white; } - .progress.is-white:indeterminate { - background-image: linear-gradient(to right, white 30%, #dbdbdb 30%); } - .progress.is-black::-webkit-progress-value { - background-color: #0a0a0a; } - .progress.is-black::-moz-progress-bar { - background-color: #0a0a0a; } - .progress.is-black::-ms-fill { - background-color: #0a0a0a; } - .progress.is-black:indeterminate { - background-image: linear-gradient(to right, #0a0a0a 30%, #dbdbdb 30%); } - .progress.is-light::-webkit-progress-value { - background-color: whitesmoke; } - .progress.is-light::-moz-progress-bar { - background-color: whitesmoke; } - .progress.is-light::-ms-fill { - background-color: whitesmoke; } - .progress.is-light:indeterminate { - background-image: linear-gradient(to right, whitesmoke 30%, #dbdbdb 30%); } - .progress.is-dark::-webkit-progress-value, .content kbd.progress::-webkit-progress-value { - background-color: #363636; } - .progress.is-dark::-moz-progress-bar, .content kbd.progress::-moz-progress-bar { - background-color: #363636; } - .progress.is-dark::-ms-fill, .content kbd.progress::-ms-fill { - background-color: #363636; } - .progress.is-dark:indeterminate, .content kbd.progress:indeterminate { - background-image: linear-gradient(to right, #363636 30%, #dbdbdb 30%); } - .progress.is-primary::-webkit-progress-value, .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { - background-color: #4eb5de; } - .progress.is-primary::-moz-progress-bar, .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { - background-color: #4eb5de; } - .progress.is-primary::-ms-fill, .docstring > section > a.progress.docs-sourcelink::-ms-fill { - background-color: #4eb5de; } - .progress.is-primary:indeterminate, .docstring > section > a.progress.docs-sourcelink:indeterminate { - background-image: linear-gradient(to right, #4eb5de 30%, #dbdbdb 30%); } - .progress.is-link::-webkit-progress-value { - background-color: #2e63b8; } - .progress.is-link::-moz-progress-bar { - background-color: #2e63b8; } - .progress.is-link::-ms-fill { - background-color: #2e63b8; } - .progress.is-link:indeterminate { - background-image: linear-gradient(to right, #2e63b8 30%, #dbdbdb 30%); } - .progress.is-info::-webkit-progress-value { - background-color: #209cee; } - .progress.is-info::-moz-progress-bar { - background-color: #209cee; } - .progress.is-info::-ms-fill { - background-color: #209cee; } - .progress.is-info:indeterminate { - background-image: linear-gradient(to right, #209cee 30%, #dbdbdb 30%); } - .progress.is-success::-webkit-progress-value { - background-color: #22c35b; } - .progress.is-success::-moz-progress-bar { - background-color: #22c35b; } - .progress.is-success::-ms-fill { - background-color: #22c35b; } - .progress.is-success:indeterminate { - background-image: linear-gradient(to right, #22c35b 30%, #dbdbdb 30%); } - .progress.is-warning::-webkit-progress-value { - background-color: #ffdd57; } - .progress.is-warning::-moz-progress-bar { - background-color: #ffdd57; } - .progress.is-warning::-ms-fill { - background-color: #ffdd57; } - .progress.is-warning:indeterminate { - background-image: linear-gradient(to right, #ffdd57 30%, #dbdbdb 30%); } - .progress.is-danger::-webkit-progress-value { - background-color: #da0b00; } - .progress.is-danger::-moz-progress-bar { - background-color: #da0b00; } - .progress.is-danger::-ms-fill { - background-color: #da0b00; } - .progress.is-danger:indeterminate { - background-image: linear-gradient(to right, #da0b00 30%, #dbdbdb 30%); } - .progress:indeterminate { - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-name: moveIndeterminate; - animation-timing-function: linear; - background-color: #dbdbdb; - background-image: linear-gradient(to right, #222222 30%, #dbdbdb 30%); - background-position: top left; - background-repeat: no-repeat; - background-size: 150% 150%; } - .progress:indeterminate::-webkit-progress-bar { - background-color: transparent; } - .progress:indeterminate::-moz-progress-bar { - background-color: transparent; } - .progress.is-small, #documenter .docs-sidebar form.docs-search > input.progress { - height: 0.75rem; } - .progress.is-medium { - height: 1.25rem; } - .progress.is-large { - height: 1.5rem; } - -@keyframes moveIndeterminate { - from { - background-position: 200% 0; } - to { - background-position: -200% 0; } } - -.table { - background-color: white; - color: #363636; } - .table td, - .table th { - border: 1px solid #dbdbdb; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - .table td.is-white, - .table th.is-white { - background-color: white; - border-color: white; - color: #0a0a0a; } - .table td.is-black, - .table th.is-black { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - .table td.is-light, - .table th.is-light { - background-color: whitesmoke; - border-color: whitesmoke; - color: #363636; } - .table td.is-dark, - .table th.is-dark { - background-color: #363636; - border-color: #363636; - color: whitesmoke; } - .table td.is-primary, - .table th.is-primary { - background-color: #4eb5de; - border-color: #4eb5de; - color: #fff; } - .table td.is-link, - .table th.is-link { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; } - .table td.is-info, - .table th.is-info { - background-color: #209cee; - border-color: #209cee; - color: #fff; } - .table td.is-success, - .table th.is-success { - background-color: #22c35b; - border-color: #22c35b; - color: #fff; } - .table td.is-warning, - .table th.is-warning { - background-color: #ffdd57; - border-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .table td.is-danger, - .table th.is-danger { - background-color: #da0b00; - border-color: #da0b00; - color: #fff; } - .table td.is-narrow, - .table th.is-narrow { - white-space: nowrap; - width: 1%; } - .table td.is-selected, - .table th.is-selected { - background-color: #4eb5de; - color: #fff; } - .table td.is-selected a, - .table td.is-selected strong, - .table th.is-selected a, - .table th.is-selected strong { - color: currentColor; } - .table th { - color: #222222; } - .table th:not([align]) { - text-align: left; } - .table tr.is-selected { - background-color: #4eb5de; - color: #fff; } - .table tr.is-selected a, - .table tr.is-selected strong { - color: currentColor; } - .table tr.is-selected td, - .table tr.is-selected th { - border-color: #fff; - color: currentColor; } - .table thead { - background-color: transparent; } - .table thead td, - .table thead th { - border-width: 0 0 2px; - color: #222222; } - .table tfoot { - background-color: transparent; } - .table tfoot td, - .table tfoot th { - border-width: 2px 0 0; - color: #222222; } - .table tbody { - background-color: transparent; } - .table tbody tr:last-child td, - .table tbody tr:last-child th { - border-bottom-width: 0; } - .table.is-bordered td, - .table.is-bordered th { - border-width: 1px; } - .table.is-bordered tr:last-child td, - .table.is-bordered tr:last-child th { - border-bottom-width: 1px; } - .table.is-fullwidth { - width: 100%; } - .table.is-hoverable tbody tr:not(.is-selected):hover { - background-color: #fafafa; } - .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { - background-color: #fafafa; } - .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { - background-color: whitesmoke; } - .table.is-narrow td, - .table.is-narrow th { - padding: 0.25em 0.5em; } - .table.is-striped tbody tr:not(.is-selected):nth-child(even) { - background-color: #fafafa; } - -.table-container { - -webkit-overflow-scrolling: touch; - overflow: auto; - overflow-y: hidden; - max-width: 100%; } - -.tags { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .tags .tag, .tags .docstring > section > a.docs-sourcelink, .tags .content kbd, .content .tags kbd { - margin-bottom: 0.5rem; } - .tags .tag:not(:last-child), .tags .docstring > section > a.docs-sourcelink:not(:last-child), .tags .content kbd:not(:last-child), .content .tags kbd:not(:last-child) { - margin-right: 0.5rem; } - .tags:last-child { - margin-bottom: -0.5rem; } - .tags:not(:last-child) { - margin-bottom: 1rem; } - .tags.are-medium .tag:not(.is-normal):not(.is-large), .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large), .tags.are-medium .content kbd:not(.is-normal):not(.is-large), .content .tags.are-medium kbd:not(.is-normal):not(.is-large) { - font-size: 1rem; } - .tags.are-large .tag:not(.is-normal):not(.is-medium), .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium), .tags.are-large .content kbd:not(.is-normal):not(.is-medium), .content .tags.are-large kbd:not(.is-normal):not(.is-medium) { - font-size: 1.25rem; } - .tags.is-centered { - justify-content: center; } - .tags.is-centered .tag, .tags.is-centered .docstring > section > a.docs-sourcelink, .tags.is-centered .content kbd, .content .tags.is-centered kbd { - margin-right: 0.25rem; - margin-left: 0.25rem; } - .tags.is-right { - justify-content: flex-end; } - .tags.is-right .tag:not(:first-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child), .tags.is-right .content kbd:not(:first-child), .content .tags.is-right kbd:not(:first-child) { - margin-left: 0.5rem; } - .tags.is-right .tag:not(:last-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child), .tags.is-right .content kbd:not(:last-child), .content .tags.is-right kbd:not(:last-child) { - margin-right: 0; } - .tags.has-addons .tag, .tags.has-addons .docstring > section > a.docs-sourcelink, .tags.has-addons .content kbd, .content .tags.has-addons kbd { - margin-right: 0; } - .tags.has-addons .tag:not(:first-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child), .tags.has-addons .content kbd:not(:first-child), .content .tags.has-addons kbd:not(:first-child) { - margin-left: 0; - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .tags.has-addons .tag:not(:last-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child), .tags.has-addons .content kbd:not(:last-child), .content .tags.has-addons kbd:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - -.tag:not(body), .docstring > section > a.docs-sourcelink:not(body), .content kbd:not(body) { - align-items: center; - background-color: whitesmoke; - border-radius: 4px; - color: #222222; - display: inline-flex; - font-size: 0.75rem; - height: 2em; - justify-content: center; - line-height: 1.5; - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - .tag:not(body) .delete, .docstring > section > a.docs-sourcelink:not(body) .delete, .content kbd:not(body) .delete { - margin-left: 0.25rem; - margin-right: -0.375rem; } - .tag:not(body).is-white, .docstring > section > a.docs-sourcelink:not(body).is-white, .content kbd:not(body).is-white { - background-color: white; - color: #0a0a0a; } - .tag:not(body).is-black, .docstring > section > a.docs-sourcelink:not(body).is-black, .content kbd:not(body).is-black { - background-color: #0a0a0a; - color: white; } - .tag:not(body).is-light, .docstring > section > a.docs-sourcelink:not(body).is-light, .content kbd:not(body).is-light { - background-color: whitesmoke; - color: #363636; } - .tag:not(body).is-dark, .docstring > section > a.docs-sourcelink:not(body).is-dark, .content kbd:not(body) { - background-color: #363636; - color: whitesmoke; } - .tag:not(body).is-primary, .docstring > section > a.docs-sourcelink:not(body), .content kbd:not(body).is-primary { - background-color: #4eb5de; - color: #fff; } - .tag:not(body).is-link, .docstring > section > a.docs-sourcelink:not(body).is-link, .content kbd:not(body).is-link { - background-color: #2e63b8; - color: #fff; } - .tag:not(body).is-info, .docstring > section > a.docs-sourcelink:not(body).is-info, .content kbd:not(body).is-info { - background-color: #209cee; - color: #fff; } - .tag:not(body).is-success, .docstring > section > a.docs-sourcelink:not(body).is-success, .content kbd:not(body).is-success { - background-color: #22c35b; - color: #fff; } - .tag:not(body).is-warning, .docstring > section > a.docs-sourcelink:not(body).is-warning, .content kbd:not(body).is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .tag:not(body).is-danger, .docstring > section > a.docs-sourcelink:not(body).is-danger, .content kbd:not(body).is-danger { - background-color: #da0b00; - color: #fff; } - .tag:not(body).is-normal, .docstring > section > a.docs-sourcelink:not(body).is-normal, .content kbd:not(body).is-normal { - font-size: 0.75rem; } - .tag:not(body).is-medium, .docstring > section > a.docs-sourcelink:not(body).is-medium, .content kbd:not(body).is-medium { - font-size: 1rem; } - .tag:not(body).is-large, .docstring > section > a.docs-sourcelink:not(body).is-large, .content kbd:not(body).is-large { - font-size: 1.25rem; } - .tag:not(body) .icon:first-child:not(:last-child), .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child), .content kbd:not(body) .icon:first-child:not(:last-child) { - margin-left: -0.375em; - margin-right: 0.1875em; } - .tag:not(body) .icon:last-child:not(:first-child), .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child), .content kbd:not(body) .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: -0.375em; } - .tag:not(body) .icon:first-child:last-child, .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child, .content kbd:not(body) .icon:first-child:last-child { - margin-left: -0.375em; - margin-right: -0.375em; } - .tag:not(body).is-delete, .docstring > section > a.docs-sourcelink:not(body).is-delete, .content kbd:not(body).is-delete { - margin-left: 1px; - padding: 0; - position: relative; - width: 2em; } - .tag:not(body).is-delete::before, .docstring > section > a.docs-sourcelink:not(body).is-delete::before, .content kbd:not(body).is-delete::before, .tag:not(body).is-delete::after, .docstring > section > a.docs-sourcelink:not(body).is-delete::after, .content kbd:not(body).is-delete::after { - background-color: currentColor; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - .tag:not(body).is-delete::before, .docstring > section > a.docs-sourcelink:not(body).is-delete::before, .content kbd:not(body).is-delete::before { - height: 1px; - width: 50%; } - .tag:not(body).is-delete::after, .docstring > section > a.docs-sourcelink:not(body).is-delete::after, .content kbd:not(body).is-delete::after { - height: 50%; - width: 1px; } - .tag:not(body).is-delete:hover, .docstring > section > a.docs-sourcelink:not(body).is-delete:hover, .content kbd:not(body).is-delete:hover, .tag:not(body).is-delete:focus, .docstring > section > a.docs-sourcelink:not(body).is-delete:focus, .content kbd:not(body).is-delete:focus { - background-color: #e8e8e8; } - .tag:not(body).is-delete:active, .docstring > section > a.docs-sourcelink:not(body).is-delete:active, .content kbd:not(body).is-delete:active { - background-color: #dbdbdb; } - .tag:not(body).is-rounded, .docstring > section > a.docs-sourcelink:not(body).is-rounded, .content kbd:not(body).is-rounded, #documenter .docs-sidebar form.docs-search > input.tag:not(body) { - border-radius: 290486px; } - -a.tag:hover, .docstring > section > a.docs-sourcelink:hover { - text-decoration: underline; } - -.title, -.subtitle { - word-break: break-word; } - .title em, - .title span, - .subtitle em, - .subtitle span { - font-weight: inherit; } - .title sub, - .subtitle sub { - font-size: 0.75em; } - .title sup, - .subtitle sup { - font-size: 0.75em; } - .title .tag, .title .docstring > section > a.docs-sourcelink, .title .content kbd, .content .title kbd, - .subtitle .tag, - .subtitle .docstring > section > a.docs-sourcelink, - .subtitle .content kbd, - .content .subtitle kbd { - vertical-align: middle; } - -.title { - color: #363636; - font-size: 2rem; - font-weight: 600; - line-height: 1.125; } - .title strong { - color: inherit; - font-weight: inherit; } - .title + .highlight { - margin-top: -0.75rem; } - .title:not(.is-spaced) + .subtitle { - margin-top: -1.25rem; } - .title.is-1 { - font-size: 3rem; } - .title.is-2 { - font-size: 2.5rem; } - .title.is-3 { - font-size: 2rem; } - .title.is-4 { - font-size: 1.5rem; } - .title.is-5 { - font-size: 1.25rem; } - .title.is-6 { - font-size: 1rem; } - .title.is-7 { - font-size: 0.75rem; } - -.subtitle { - color: #4a4a4a; - font-size: 1.25rem; - font-weight: 400; - line-height: 1.25; } - .subtitle strong { - color: #363636; - font-weight: 600; } - .subtitle:not(.is-spaced) + .title { - margin-top: -1.25rem; } - .subtitle.is-1 { - font-size: 3rem; } - .subtitle.is-2 { - font-size: 2.5rem; } - .subtitle.is-3 { - font-size: 2rem; } - .subtitle.is-4 { - font-size: 1.5rem; } - .subtitle.is-5 { - font-size: 1.25rem; } - .subtitle.is-6 { - font-size: 1rem; } - .subtitle.is-7 { - font-size: 0.75rem; } - -.heading { - display: block; - font-size: 11px; - letter-spacing: 1px; - margin-bottom: 5px; - text-transform: uppercase; } - -.highlight { - font-weight: 400; - max-width: 100%; - overflow: hidden; - padding: 0; } - .highlight pre { - overflow: auto; - max-width: 100%; } - -.number { - align-items: center; - background-color: whitesmoke; - border-radius: 290486px; - display: inline-flex; - font-size: 1.25rem; - height: 2em; - justify-content: center; - margin-right: 1.5rem; - min-width: 2.5em; - padding: 0.25rem 0.5rem; - text-align: center; - vertical-align: top; } - -.input, #documenter .docs-sidebar form.docs-search > input, .textarea, .select select { - background-color: white; - border-color: #dbdbdb; - border-radius: 4px; - color: #363636; } - .input::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .select select::-webkit-input-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, .textarea:-moz-placeholder, .select select:-moz-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, .textarea:-ms-input-placeholder, .select select:-ms-input-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input:hover, #documenter .docs-sidebar form.docs-search > input:hover, .textarea:hover, .select select:hover, .is-hovered.input, #documenter .docs-sidebar form.docs-search > input.is-hovered, .is-hovered.textarea, .select select.is-hovered { - border-color: #b5b5b5; } - .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .textarea:focus, .select select:focus, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-focused.textarea, .select select.is-focused, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .textarea:active, .select select:active, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .is-active.textarea, .select select.is-active { - border-color: #2e63b8; - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], .textarea[disabled], .select select[disabled], - fieldset[disabled] .input, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, - fieldset[disabled] .textarea, - fieldset[disabled] .select select, - .select fieldset[disabled] select { - background-color: whitesmoke; - border-color: whitesmoke; - box-shadow: none; - color: #7a7a7a; } - .input[disabled]::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, .textarea[disabled]::-moz-placeholder, .select select[disabled]::-moz-placeholder, - fieldset[disabled] .input::-moz-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-moz-placeholder, - fieldset[disabled] .textarea::-moz-placeholder, - fieldset[disabled] .select select::-moz-placeholder, - .select fieldset[disabled] select::-moz-placeholder { - color: rgba(122, 122, 122, 0.3); } - .input[disabled]::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, .textarea[disabled]::-webkit-input-placeholder, .select select[disabled]::-webkit-input-placeholder, - fieldset[disabled] .input::-webkit-input-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-webkit-input-placeholder, - fieldset[disabled] .textarea::-webkit-input-placeholder, - fieldset[disabled] .select select::-webkit-input-placeholder, - .select fieldset[disabled] select::-webkit-input-placeholder { - color: rgba(122, 122, 122, 0.3); } - .input[disabled]:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, .textarea[disabled]:-moz-placeholder, .select select[disabled]:-moz-placeholder, - fieldset[disabled] .input:-moz-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-moz-placeholder, - fieldset[disabled] .textarea:-moz-placeholder, - fieldset[disabled] .select select:-moz-placeholder, - .select fieldset[disabled] select:-moz-placeholder { - color: rgba(122, 122, 122, 0.3); } - .input[disabled]:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, .textarea[disabled]:-ms-input-placeholder, .select select[disabled]:-ms-input-placeholder, - fieldset[disabled] .input:-ms-input-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-ms-input-placeholder, - fieldset[disabled] .textarea:-ms-input-placeholder, - fieldset[disabled] .select select:-ms-input-placeholder, - .select fieldset[disabled] select:-ms-input-placeholder { - color: rgba(122, 122, 122, 0.3); } - -.input, #documenter .docs-sidebar form.docs-search > input, .textarea { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - max-width: 100%; - width: 100%; } - .input[readonly], #documenter .docs-sidebar form.docs-search > input[readonly], .textarea[readonly] { - box-shadow: none; } - .is-white.input, #documenter .docs-sidebar form.docs-search > input.is-white, .is-white.textarea { - border-color: white; } - .is-white.input:focus, #documenter .docs-sidebar form.docs-search > input.is-white:focus, .is-white.textarea:focus, .is-white.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-white.is-focused, .is-white.is-focused.textarea, .is-white.input:active, #documenter .docs-sidebar form.docs-search > input.is-white:active, .is-white.textarea:active, .is-white.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-white.is-active, .is-white.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - .is-black.input, #documenter .docs-sidebar form.docs-search > input.is-black, .is-black.textarea { - border-color: #0a0a0a; } - .is-black.input:focus, #documenter .docs-sidebar form.docs-search > input.is-black:focus, .is-black.textarea:focus, .is-black.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-black.is-focused, .is-black.is-focused.textarea, .is-black.input:active, #documenter .docs-sidebar form.docs-search > input.is-black:active, .is-black.textarea:active, .is-black.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-black.is-active, .is-black.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - .is-light.input, #documenter .docs-sidebar form.docs-search > input.is-light, .is-light.textarea { - border-color: whitesmoke; } - .is-light.input:focus, #documenter .docs-sidebar form.docs-search > input.is-light:focus, .is-light.textarea:focus, .is-light.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-light.is-focused, .is-light.is-focused.textarea, .is-light.input:active, #documenter .docs-sidebar form.docs-search > input.is-light:active, .is-light.textarea:active, .is-light.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-light.is-active, .is-light.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } - .is-dark.input, .content kbd.input, #documenter .docs-sidebar form.docs-search > input.is-dark, .is-dark.textarea, .content kbd.textarea { - border-color: #363636; } - .is-dark.input:focus, .content kbd.input:focus, #documenter .docs-sidebar form.docs-search > input.is-dark:focus, .is-dark.textarea:focus, .content kbd.textarea:focus, .is-dark.is-focused.input, .content kbd.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-dark.is-focused, .is-dark.is-focused.textarea, .content kbd.is-focused.textarea, .is-dark.input:active, .content kbd.input:active, #documenter .docs-sidebar form.docs-search > input.is-dark:active, .is-dark.textarea:active, .content kbd.textarea:active, .is-dark.is-active.input, .content kbd.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-dark.is-active, .is-dark.is-active.textarea, .content kbd.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } - .is-primary.input, .docstring > section > a.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary, .is-primary.textarea, .docstring > section > a.textarea.docs-sourcelink { - border-color: #4eb5de; } - .is-primary.input:focus, .docstring > section > a.input.docs-sourcelink:focus, #documenter .docs-sidebar form.docs-search > input.is-primary:focus, .is-primary.textarea:focus, .docstring > section > a.textarea.docs-sourcelink:focus, .is-primary.is-focused.input, .docstring > section > a.is-focused.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary.is-focused, .is-primary.is-focused.textarea, .docstring > section > a.is-focused.textarea.docs-sourcelink, .is-primary.input:active, .docstring > section > a.input.docs-sourcelink:active, #documenter .docs-sidebar form.docs-search > input.is-primary:active, .is-primary.textarea:active, .docstring > section > a.textarea.docs-sourcelink:active, .is-primary.is-active.input, .docstring > section > a.is-active.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary.is-active, .is-primary.is-active.textarea, .docstring > section > a.is-active.textarea.docs-sourcelink { - box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } - .is-link.input, #documenter .docs-sidebar form.docs-search > input.is-link, .is-link.textarea { - border-color: #2e63b8; } - .is-link.input:focus, #documenter .docs-sidebar form.docs-search > input.is-link:focus, .is-link.textarea:focus, .is-link.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-link.is-focused, .is-link.is-focused.textarea, .is-link.input:active, #documenter .docs-sidebar form.docs-search > input.is-link:active, .is-link.textarea:active, .is-link.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-link.is-active, .is-link.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .is-info.input, #documenter .docs-sidebar form.docs-search > input.is-info, .is-info.textarea { - border-color: #209cee; } - .is-info.input:focus, #documenter .docs-sidebar form.docs-search > input.is-info:focus, .is-info.textarea:focus, .is-info.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-info.is-focused, .is-info.is-focused.textarea, .is-info.input:active, #documenter .docs-sidebar form.docs-search > input.is-info:active, .is-info.textarea:active, .is-info.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-info.is-active, .is-info.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } - .is-success.input, #documenter .docs-sidebar form.docs-search > input.is-success, .is-success.textarea { - border-color: #22c35b; } - .is-success.input:focus, #documenter .docs-sidebar form.docs-search > input.is-success:focus, .is-success.textarea:focus, .is-success.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-success.is-focused, .is-success.is-focused.textarea, .is-success.input:active, #documenter .docs-sidebar form.docs-search > input.is-success:active, .is-success.textarea:active, .is-success.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-success.is-active, .is-success.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } - .is-warning.input, #documenter .docs-sidebar form.docs-search > input.is-warning, .is-warning.textarea { - border-color: #ffdd57; } - .is-warning.input:focus, #documenter .docs-sidebar form.docs-search > input.is-warning:focus, .is-warning.textarea:focus, .is-warning.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-warning.is-focused, .is-warning.is-focused.textarea, .is-warning.input:active, #documenter .docs-sidebar form.docs-search > input.is-warning:active, .is-warning.textarea:active, .is-warning.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-warning.is-active, .is-warning.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } - .is-danger.input, #documenter .docs-sidebar form.docs-search > input.is-danger, .is-danger.textarea { - border-color: #da0b00; } - .is-danger.input:focus, #documenter .docs-sidebar form.docs-search > input.is-danger:focus, .is-danger.textarea:focus, .is-danger.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-danger.is-focused, .is-danger.is-focused.textarea, .is-danger.input:active, #documenter .docs-sidebar form.docs-search > input.is-danger:active, .is-danger.textarea:active, .is-danger.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-danger.is-active, .is-danger.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } - .is-small.input, #documenter .docs-sidebar form.docs-search > input, .is-small.textarea { - border-radius: 2px; - font-size: 0.75rem; } - .is-medium.input, #documenter .docs-sidebar form.docs-search > input.is-medium, .is-medium.textarea { - font-size: 1.25rem; } - .is-large.input, #documenter .docs-sidebar form.docs-search > input.is-large, .is-large.textarea { - font-size: 1.5rem; } - .is-fullwidth.input, #documenter .docs-sidebar form.docs-search > input.is-fullwidth, .is-fullwidth.textarea { - display: block; - width: 100%; } - .is-inline.input, #documenter .docs-sidebar form.docs-search > input.is-inline, .is-inline.textarea { - display: inline; - width: auto; } - -.input.is-rounded, #documenter .docs-sidebar form.docs-search > input { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - -.input.is-static, #documenter .docs-sidebar form.docs-search > input.is-static { - background-color: transparent; - border-color: transparent; - box-shadow: none; - padding-left: 0; - padding-right: 0; } - -.textarea { - display: block; - max-width: 100%; - min-width: 100%; - padding: 0.625em; - resize: vertical; } - .textarea:not([rows]) { - max-height: 600px; - min-height: 120px; } - .textarea[rows] { - height: initial; } - .textarea.has-fixed-size { - resize: none; } - -.checkbox, .radio { - cursor: pointer; - display: inline-block; - line-height: 1.25; - position: relative; } - .checkbox input, .radio input { - cursor: pointer; } - .checkbox:hover, .radio:hover { - color: #363636; } - .checkbox[disabled], .radio[disabled], - fieldset[disabled] .checkbox, - fieldset[disabled] .radio { - color: #7a7a7a; - cursor: not-allowed; } - -.radio + .radio { - margin-left: 0.5em; } - -.select { - display: inline-block; - max-width: 100%; - position: relative; - vertical-align: top; } - .select:not(.is-multiple) { - height: 2.25em; } - .select:not(.is-multiple):not(.is-loading)::after { - border-color: #2e63b8; - right: 1.125em; - z-index: 4; } - .select.is-rounded select, #documenter .docs-sidebar form.docs-search > input.select select { - border-radius: 290486px; - padding-left: 1em; } - .select select { - cursor: pointer; - display: block; - font-size: 1em; - max-width: 100%; - outline: none; } - .select select::-ms-expand { - display: none; } - .select select[disabled]:hover, - fieldset[disabled] .select select:hover { - border-color: whitesmoke; } - .select select:not([multiple]) { - padding-right: 2.5em; } - .select select[multiple] { - height: auto; - padding: 0; } - .select select[multiple] option { - padding: 0.5em 1em; } - .select:not(.is-multiple):not(.is-loading):hover::after { - border-color: #363636; } - .select.is-white:not(:hover)::after { - border-color: white; } - .select.is-white select { - border-color: white; } - .select.is-white select:hover, .select.is-white select.is-hovered { - border-color: #f2f2f2; } - .select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - .select.is-black:not(:hover)::after { - border-color: #0a0a0a; } - .select.is-black select { - border-color: #0a0a0a; } - .select.is-black select:hover, .select.is-black select.is-hovered { - border-color: black; } - .select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - .select.is-light:not(:hover)::after { - border-color: whitesmoke; } - .select.is-light select { - border-color: whitesmoke; } - .select.is-light select:hover, .select.is-light select.is-hovered { - border-color: #e8e8e8; } - .select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } - .select.is-dark:not(:hover)::after, .content kbd.select:not(:hover)::after { - border-color: #363636; } - .select.is-dark select, .content kbd.select select { - border-color: #363636; } - .select.is-dark select:hover, .content kbd.select select:hover, .select.is-dark select.is-hovered, .content kbd.select select.is-hovered { - border-color: #292929; } - .select.is-dark select:focus, .content kbd.select select:focus, .select.is-dark select.is-focused, .content kbd.select select.is-focused, .select.is-dark select:active, .content kbd.select select:active, .select.is-dark select.is-active, .content kbd.select select.is-active { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } - .select.is-primary:not(:hover)::after, .docstring > section > a.select.docs-sourcelink:not(:hover)::after { - border-color: #4eb5de; } - .select.is-primary select, .docstring > section > a.select.docs-sourcelink select { - border-color: #4eb5de; } - .select.is-primary select:hover, .docstring > section > a.select.docs-sourcelink select:hover, .select.is-primary select.is-hovered, .docstring > section > a.select.docs-sourcelink select.is-hovered { - border-color: #39acda; } - .select.is-primary select:focus, .docstring > section > a.select.docs-sourcelink select:focus, .select.is-primary select.is-focused, .docstring > section > a.select.docs-sourcelink select.is-focused, .select.is-primary select:active, .docstring > section > a.select.docs-sourcelink select:active, .select.is-primary select.is-active, .docstring > section > a.select.docs-sourcelink select.is-active { - box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } - .select.is-link:not(:hover)::after { - border-color: #2e63b8; } - .select.is-link select { - border-color: #2e63b8; } - .select.is-link select:hover, .select.is-link select.is-hovered { - border-color: #2958a4; } - .select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .select.is-info:not(:hover)::after { - border-color: #209cee; } - .select.is-info select { - border-color: #209cee; } - .select.is-info select:hover, .select.is-info select.is-hovered { - border-color: #118fe4; } - .select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { - box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } - .select.is-success:not(:hover)::after { - border-color: #22c35b; } - .select.is-success select { - border-color: #22c35b; } - .select.is-success select:hover, .select.is-success select.is-hovered { - border-color: #1ead51; } - .select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { - box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } - .select.is-warning:not(:hover)::after { - border-color: #ffdd57; } - .select.is-warning select { - border-color: #ffdd57; } - .select.is-warning select:hover, .select.is-warning select.is-hovered { - border-color: #ffd83d; } - .select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } - .select.is-danger:not(:hover)::after { - border-color: #da0b00; } - .select.is-danger select { - border-color: #da0b00; } - .select.is-danger select:hover, .select.is-danger select.is-hovered { - border-color: #c10a00; } - .select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { - box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } - .select.is-small, #documenter .docs-sidebar form.docs-search > input.select { - border-radius: 2px; - font-size: 0.75rem; } - .select.is-medium { - font-size: 1.25rem; } - .select.is-large { - font-size: 1.5rem; } - .select.is-disabled::after { - border-color: #7a7a7a; } - .select.is-fullwidth { - width: 100%; } - .select.is-fullwidth select { - width: 100%; } - .select.is-loading::after { - margin-top: 0; - position: absolute; - right: 0.625em; - top: 0.625em; - transform: none; } - .select.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.select.is-loading:after { - font-size: 0.75rem; } - .select.is-loading.is-medium:after { - font-size: 1.25rem; } - .select.is-loading.is-large:after { - font-size: 1.5rem; } - -.file { - align-items: stretch; - display: flex; - justify-content: flex-start; - position: relative; } - .file.is-white .file-cta { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - .file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - .file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); - color: #0a0a0a; } - .file.is-white:active .file-cta, .file.is-white.is-active .file-cta { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - .file.is-black .file-cta { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - .file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { - background-color: #040404; - border-color: transparent; - color: white; } - .file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); - color: white; } - .file.is-black:active .file-cta, .file.is-black.is-active .file-cta { - background-color: black; - border-color: transparent; - color: white; } - .file.is-light .file-cta { - background-color: whitesmoke; - border-color: transparent; - color: #363636; } - .file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { - background-color: #eeeeee; - border-color: transparent; - color: #363636; } - .file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); - color: #363636; } - .file.is-light:active .file-cta, .file.is-light.is-active .file-cta { - background-color: #e8e8e8; - border-color: transparent; - color: #363636; } - .file.is-dark .file-cta, .content kbd.file .file-cta { - background-color: #363636; - border-color: transparent; - color: whitesmoke; } - .file.is-dark:hover .file-cta, .content kbd.file:hover .file-cta, .file.is-dark.is-hovered .file-cta, .content kbd.file.is-hovered .file-cta { - background-color: #2f2f2f; - border-color: transparent; - color: whitesmoke; } - .file.is-dark:focus .file-cta, .content kbd.file:focus .file-cta, .file.is-dark.is-focused .file-cta, .content kbd.file.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); - color: whitesmoke; } - .file.is-dark:active .file-cta, .content kbd.file:active .file-cta, .file.is-dark.is-active .file-cta, .content kbd.file.is-active .file-cta { - background-color: #292929; - border-color: transparent; - color: whitesmoke; } - .file.is-primary .file-cta, .docstring > section > a.file.docs-sourcelink .file-cta { - background-color: #4eb5de; - border-color: transparent; - color: #fff; } - .file.is-primary:hover .file-cta, .docstring > section > a.file.docs-sourcelink:hover .file-cta, .file.is-primary.is-hovered .file-cta, .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { - background-color: #43b1dc; - border-color: transparent; - color: #fff; } - .file.is-primary:focus .file-cta, .docstring > section > a.file.docs-sourcelink:focus .file-cta, .file.is-primary.is-focused .file-cta, .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(78, 181, 222, 0.25); - color: #fff; } - .file.is-primary:active .file-cta, .docstring > section > a.file.docs-sourcelink:active .file-cta, .file.is-primary.is-active .file-cta, .docstring > section > a.file.is-active.docs-sourcelink .file-cta { - background-color: #39acda; - border-color: transparent; - color: #fff; } - .file.is-link .file-cta { - background-color: #2e63b8; - border-color: transparent; - color: #fff; } - .file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { - background-color: #2b5eae; - border-color: transparent; - color: #fff; } - .file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(46, 99, 184, 0.25); - color: #fff; } - .file.is-link:active .file-cta, .file.is-link.is-active .file-cta { - background-color: #2958a4; - border-color: transparent; - color: #fff; } - .file.is-info .file-cta { - background-color: #209cee; - border-color: transparent; - color: #fff; } - .file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { - background-color: #1496ed; - border-color: transparent; - color: #fff; } - .file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(32, 156, 238, 0.25); - color: #fff; } - .file.is-info:active .file-cta, .file.is-info.is-active .file-cta { - background-color: #118fe4; - border-color: transparent; - color: #fff; } - .file.is-success .file-cta { - background-color: #22c35b; - border-color: transparent; - color: #fff; } - .file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { - background-color: #20b856; - border-color: transparent; - color: #fff; } - .file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(34, 195, 91, 0.25); - color: #fff; } - .file.is-success:active .file-cta, .file.is-success.is-active .file-cta { - background-color: #1ead51; - border-color: transparent; - color: #fff; } - .file.is-warning .file-cta { - background-color: #ffdd57; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { - background-color: #ffdb4a; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25); - color: rgba(0, 0, 0, 0.7); } - .file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { - background-color: #ffd83d; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .file.is-danger .file-cta { - background-color: #da0b00; - border-color: transparent; - color: #fff; } - .file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { - background-color: #cd0a00; - border-color: transparent; - color: #fff; } - .file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(218, 11, 0, 0.25); - color: #fff; } - .file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { - background-color: #c10a00; - border-color: transparent; - color: #fff; } - .file.is-small, #documenter .docs-sidebar form.docs-search > input.file { - font-size: 0.75rem; } - .file.is-medium { - font-size: 1.25rem; } - .file.is-medium .file-icon .fa { - font-size: 21px; } - .file.is-large { - font-size: 1.5rem; } - .file.is-large .file-icon .fa { - font-size: 28px; } - .file.has-name .file-cta { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - .file.has-name .file-name { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .file.has-name.is-empty .file-cta { - border-radius: 4px; } - .file.has-name.is-empty .file-name { - display: none; } - .file.is-boxed .file-label { - flex-direction: column; } - .file.is-boxed .file-cta { - flex-direction: column; - height: auto; - padding: 1em 3em; } - .file.is-boxed .file-name { - border-width: 0 1px 1px; } - .file.is-boxed .file-icon { - height: 1.5em; - width: 1.5em; } - .file.is-boxed .file-icon .fa { - font-size: 21px; } - .file.is-boxed.is-small .file-icon .fa, #documenter .docs-sidebar form.docs-search > input.file.is-boxed .file-icon .fa { - font-size: 14px; } - .file.is-boxed.is-medium .file-icon .fa { - font-size: 28px; } - .file.is-boxed.is-large .file-icon .fa { - font-size: 35px; } - .file.is-boxed.has-name .file-cta { - border-radius: 4px 4px 0 0; } - .file.is-boxed.has-name .file-name { - border-radius: 0 0 4px 4px; - border-width: 0 1px 1px; } - .file.is-centered { - justify-content: center; } - .file.is-fullwidth .file-label { - width: 100%; } - .file.is-fullwidth .file-name { - flex-grow: 1; - max-width: none; } - .file.is-right { - justify-content: flex-end; } - .file.is-right .file-cta { - border-radius: 0 4px 4px 0; } - .file.is-right .file-name { - border-radius: 4px 0 0 4px; - border-width: 1px 0 1px 1px; - order: -1; } - -.file-label { - align-items: stretch; - display: flex; - cursor: pointer; - justify-content: flex-start; - overflow: hidden; - position: relative; } - .file-label:hover .file-cta { - background-color: #eeeeee; - color: #363636; } - .file-label:hover .file-name { - border-color: #d5d5d5; } - .file-label:active .file-cta { - background-color: #e8e8e8; - color: #363636; } - .file-label:active .file-name { - border-color: #cfcfcf; } - -.file-input { - height: 100%; - left: 0; - opacity: 0; - outline: none; - position: absolute; - top: 0; - width: 100%; } - -.file-cta, -.file-name { - border-color: #dbdbdb; - border-radius: 4px; - font-size: 1em; - padding-left: 1em; - padding-right: 1em; - white-space: nowrap; } - -.file-cta { - background-color: whitesmoke; - color: #4a4a4a; } - -.file-name { - border-color: #dbdbdb; - border-style: solid; - border-width: 1px 1px 1px 0; - display: block; - max-width: 16em; - overflow: hidden; - text-align: left; - text-overflow: ellipsis; } - -.file-icon { - align-items: center; - display: flex; - height: 1em; - justify-content: center; - margin-right: 0.5em; - width: 1em; } - .file-icon .fa { - font-size: 14px; } - -.label { - color: #363636; - display: block; - font-size: 1rem; - font-weight: 700; } - .label:not(:last-child) { - margin-bottom: 0.5em; } - .label.is-small, #documenter .docs-sidebar form.docs-search > input.label { - font-size: 0.75rem; } - .label.is-medium { - font-size: 1.25rem; } - .label.is-large { - font-size: 1.5rem; } - -.help { - display: block; - font-size: 0.75rem; - margin-top: 0.25rem; } - .help.is-white { - color: white; } - .help.is-black { - color: #0a0a0a; } - .help.is-light { - color: whitesmoke; } - .help.is-dark, .content kbd.help { - color: #363636; } - .help.is-primary, .docstring > section > a.help.docs-sourcelink { - color: #4eb5de; } - .help.is-link { - color: #2e63b8; } - .help.is-info { - color: #209cee; } - .help.is-success { - color: #22c35b; } - .help.is-warning { - color: #ffdd57; } - .help.is-danger { - color: #da0b00; } - -.field:not(:last-child) { - margin-bottom: 0.75rem; } - -.field.has-addons { - display: flex; - justify-content: flex-start; } - .field.has-addons .control:not(:last-child) { - margin-right: -1px; } - .field.has-addons .control:not(:first-child):not(:last-child) .button, - .field.has-addons .control:not(:first-child):not(:last-child) .input, - .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, - .field.has-addons .control:not(:first-child):not(:last-child) .select select { - border-radius: 0; } - .field.has-addons .control:first-child:not(:only-child) .button, - .field.has-addons .control:first-child:not(:only-child) .input, - .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, - .field.has-addons .control:first-child:not(:only-child) .select select { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - .field.has-addons .control:last-child:not(:only-child) .button, - .field.has-addons .control:last-child:not(:only-child) .input, - .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, - .field.has-addons .control:last-child:not(:only-child) .select select { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered, - .field.has-addons .control .input:not([disabled]):hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, - .field.has-addons .control .input:not([disabled]).is-hovered, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-hovered, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-hovered, - .field.has-addons .control .select select:not([disabled]):hover, - .field.has-addons .control .select select:not([disabled]).is-hovered { - z-index: 2; } - .field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active, - .field.has-addons .control .input:not([disabled]):focus, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, - .field.has-addons .control .input:not([disabled]).is-focused, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused, - .field.has-addons .control .input:not([disabled]):active, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, - .field.has-addons .control .input:not([disabled]).is-active, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active, - .field.has-addons .control .select select:not([disabled]):focus, - .field.has-addons .control .select select:not([disabled]).is-focused, - .field.has-addons .control .select select:not([disabled]):active, - .field.has-addons .control .select select:not([disabled]).is-active { - z-index: 3; } - .field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover, - .field.has-addons .control .input:not([disabled]):focus:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, - .field.has-addons .control .input:not([disabled]).is-focused:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused:hover, - .field.has-addons .control .input:not([disabled]):active:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, - .field.has-addons .control .input:not([disabled]).is-active:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active:hover, - .field.has-addons .control .select select:not([disabled]):focus:hover, - .field.has-addons .control .select select:not([disabled]).is-focused:hover, - .field.has-addons .control .select select:not([disabled]):active:hover, - .field.has-addons .control .select select:not([disabled]).is-active:hover { - z-index: 4; } - .field.has-addons .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .field.has-addons.has-addons-centered { - justify-content: center; } - .field.has-addons.has-addons-right { - justify-content: flex-end; } - .field.has-addons.has-addons-fullwidth .control { - flex-grow: 1; - flex-shrink: 0; } - -.field.is-grouped { - display: flex; - justify-content: flex-start; } - .field.is-grouped > .control { - flex-shrink: 0; } - .field.is-grouped > .control:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - .field.is-grouped > .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .field.is-grouped.is-grouped-centered { - justify-content: center; } - .field.is-grouped.is-grouped-right { - justify-content: flex-end; } - .field.is-grouped.is-grouped-multiline { - flex-wrap: wrap; } - .field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { - margin-bottom: 0.75rem; } - .field.is-grouped.is-grouped-multiline:last-child { - margin-bottom: -0.75rem; } - .field.is-grouped.is-grouped-multiline:not(:last-child) { - margin-bottom: 0; } - -@media screen and (min-width: 769px), print { - .field.is-horizontal { - display: flex; } } - -.field-label .label { - font-size: inherit; } - -@media screen and (max-width: 768px) { - .field-label { - margin-bottom: 0.5rem; } } - -@media screen and (min-width: 769px), print { - .field-label { - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - margin-right: 1.5rem; - text-align: right; } - .field-label.is-small, #documenter .docs-sidebar form.docs-search > input.field-label { - font-size: 0.75rem; - padding-top: 0.375em; } - .field-label.is-normal { - padding-top: 0.375em; } - .field-label.is-medium { - font-size: 1.25rem; - padding-top: 0.375em; } - .field-label.is-large { - font-size: 1.5rem; - padding-top: 0.375em; } } - -.field-body .field .field { - margin-bottom: 0; } - -@media screen and (min-width: 769px), print { - .field-body { - display: flex; - flex-basis: 0; - flex-grow: 5; - flex-shrink: 1; } - .field-body .field { - margin-bottom: 0; } - .field-body > .field { - flex-shrink: 1; } - .field-body > .field:not(.is-narrow) { - flex-grow: 1; } - .field-body > .field:not(:last-child) { - margin-right: 0.75rem; } } - -.control { - box-sizing: border-box; - clear: both; - font-size: 1rem; - position: relative; - text-align: left; } - .control.has-icons-left .input:focus ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, - .control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, - .control.has-icons-right .select:focus ~ .icon { - color: #7a7a7a; } - .control.has-icons-left .input.is-small ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, - .control.has-icons-left .select.is-small ~ .icon, - .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.select ~ .icon, .control.has-icons-right .input.is-small ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, - .control.has-icons-right .select.is-small ~ .icon, - .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.select ~ .icon { - font-size: 0.75rem; } - .control.has-icons-left .input.is-medium ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, - .control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, - .control.has-icons-right .select.is-medium ~ .icon { - font-size: 1.25rem; } - .control.has-icons-left .input.is-large ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, - .control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, - .control.has-icons-right .select.is-large ~ .icon { - font-size: 1.5rem; } - .control.has-icons-left .icon, .control.has-icons-right .icon { - color: #dbdbdb; - height: 2.25em; - pointer-events: none; - position: absolute; - top: 0; - width: 2.25em; - z-index: 4; } - .control.has-icons-left .input, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, - .control.has-icons-left .select select { - padding-left: 2.25em; } - .control.has-icons-left .icon.is-left { - left: 0; } - .control.has-icons-right .input, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, - .control.has-icons-right .select select { - padding-right: 2.25em; } - .control.has-icons-right .icon.is-right { - right: 0; } - .control.is-loading::after { - position: absolute !important; - right: 0.625em; - top: 0.625em; - z-index: 4; } - .control.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.control.is-loading:after { - font-size: 0.75rem; } - .control.is-loading.is-medium:after { - font-size: 1.25rem; } - .control.is-loading.is-large:after { - font-size: 1.5rem; } - -.breadcrumb { - font-size: 1rem; - white-space: nowrap; } - .breadcrumb a { - align-items: center; - color: #2e63b8; - display: flex; - justify-content: center; - padding: 0 0.75em; } - .breadcrumb a:hover { - color: #363636; } - .breadcrumb li { - align-items: center; - display: flex; } - .breadcrumb li:first-child a { - padding-left: 0; } - .breadcrumb li.is-active a { - color: #222222; - cursor: default; - pointer-events: none; } - .breadcrumb li + li::before { - color: #b5b5b5; - content: "\0002f"; } - .breadcrumb ul, - .breadcrumb ol { - align-items: flex-start; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .breadcrumb .icon:first-child { - margin-right: 0.5em; } - .breadcrumb .icon:last-child { - margin-left: 0.5em; } - .breadcrumb.is-centered ol, - .breadcrumb.is-centered ul { - justify-content: center; } - .breadcrumb.is-right ol, - .breadcrumb.is-right ul { - justify-content: flex-end; } - .breadcrumb.is-small, #documenter .docs-sidebar form.docs-search > input.breadcrumb { - font-size: 0.75rem; } - .breadcrumb.is-medium { - font-size: 1.25rem; } - .breadcrumb.is-large { - font-size: 1.5rem; } - .breadcrumb.has-arrow-separator li + li::before { - content: "\02192"; } - .breadcrumb.has-bullet-separator li + li::before { - content: "\02022"; } - .breadcrumb.has-dot-separator li + li::before { - content: "\000b7"; } - .breadcrumb.has-succeeds-separator li + li::before { - content: "\0227B"; } - -.card { - background-color: white; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - color: #222222; - max-width: 100%; - position: relative; } - -.card-header { - background-color: transparent; - align-items: stretch; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - display: flex; } - -.card-header-title { - align-items: center; - color: #222222; - display: flex; - flex-grow: 1; - font-weight: 700; - padding: 0.75rem; } - .card-header-title.is-centered { - justify-content: center; } - -.card-header-icon { - align-items: center; - cursor: pointer; - display: flex; - justify-content: center; - padding: 0.75rem; } - -.card-image { - display: block; - position: relative; } - -.card-content { - background-color: transparent; - padding: 1rem 1.25rem; } - -.card-footer { - background-color: transparent; - border-top: 1px solid #dbdbdb; - align-items: stretch; - display: flex; } - -.card-footer-item { - align-items: center; - display: flex; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - justify-content: center; - padding: 0.75rem; } - .card-footer-item:not(:last-child) { - border-right: 1px solid #dbdbdb; } - -.card .media:not(:last-child) { - margin-bottom: 1.5rem; } - -.dropdown { - display: inline-flex; - position: relative; - vertical-align: top; } - .dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu { - display: block; } - .dropdown.is-right .dropdown-menu { - left: auto; - right: 0; } - .dropdown.is-up .dropdown-menu { - bottom: 100%; - padding-bottom: 4px; - padding-top: initial; - top: auto; } - -.dropdown-menu { - display: none; - left: 0; - min-width: 12rem; - padding-top: 4px; - position: absolute; - top: 100%; - z-index: 20; } - -.dropdown-content { - background-color: white; - border-radius: 4px; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - -.dropdown-item { - color: #4a4a4a; - display: block; - font-size: 0.875rem; - line-height: 1.5; - padding: 0.375rem 1rem; - position: relative; } - -a.dropdown-item, -button.dropdown-item { - padding-right: 3rem; - text-align: left; - white-space: nowrap; - width: 100%; } - a.dropdown-item:hover, - button.dropdown-item:hover { - background-color: whitesmoke; - color: #0a0a0a; } - a.dropdown-item.is-active, - button.dropdown-item.is-active { - background-color: #2e63b8; - color: #fff; } - -.dropdown-divider { - background-color: #dbdbdb; - border: none; - display: block; - height: 1px; - margin: 0.5rem 0; } - -.level { - align-items: center; - justify-content: space-between; } - .level code { - border-radius: 4px; } - .level img { - display: inline-block; - vertical-align: top; } - .level.is-mobile { - display: flex; } - .level.is-mobile .level-left, - .level.is-mobile .level-right { - display: flex; } - .level.is-mobile .level-left + .level-right { - margin-top: 0; } - .level.is-mobile .level-item:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - .level.is-mobile .level-item:not(.is-narrow) { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - .level { - display: flex; } - .level > .level-item:not(.is-narrow) { - flex-grow: 1; } } - -.level-item { - align-items: center; - display: flex; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; } - .level-item .title, - .level-item .subtitle { - margin-bottom: 0; } - @media screen and (max-width: 768px) { - .level-item:not(:last-child) { - margin-bottom: 0.75rem; } } - -.level-left, -.level-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - .level-left .level-item.is-flexible, - .level-right .level-item.is-flexible { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - .level-left .level-item:not(:last-child), - .level-right .level-item:not(:last-child) { - margin-right: 0.75rem; } } - -.level-left { - align-items: center; - justify-content: flex-start; } - @media screen and (max-width: 768px) { - .level-left + .level-right { - margin-top: 1.5rem; } } - @media screen and (min-width: 769px), print { - .level-left { - display: flex; } } - -.level-right { - align-items: center; - justify-content: flex-end; } - @media screen and (min-width: 769px), print { - .level-right { - display: flex; } } - -.list { - background-color: white; - border-radius: 4px; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } - -.list-item { - display: block; - padding: 0.5em 1em; } - .list-item:not(a) { - color: #222222; } - .list-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; } - .list-item:last-child { - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; } - .list-item:not(:last-child) { - border-bottom: 1px solid #dbdbdb; } - .list-item.is-active { - background-color: #2e63b8; - color: #fff; } - -a.list-item { - background-color: whitesmoke; - cursor: pointer; } - -.media { - align-items: flex-start; - display: flex; - text-align: left; } - .media .content:not(:last-child) { - margin-bottom: 0.75rem; } - .media .media { - border-top: 1px solid rgba(219, 219, 219, 0.5); - display: flex; - padding-top: 0.75rem; } - .media .media .content:not(:last-child), - .media .media .control:not(:last-child) { - margin-bottom: 0.5rem; } - .media .media .media { - padding-top: 0.5rem; } - .media .media .media + .media { - margin-top: 0.5rem; } - .media + .media { - border-top: 1px solid rgba(219, 219, 219, 0.5); - margin-top: 1rem; - padding-top: 1rem; } - .media.is-large + .media { - margin-top: 1.5rem; - padding-top: 1.5rem; } - -.media-left, -.media-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - -.media-left { - margin-right: 1rem; } - -.media-right { - margin-left: 1rem; } - -.media-content { - flex-basis: auto; - flex-grow: 1; - flex-shrink: 1; - text-align: left; } - -@media screen and (max-width: 768px) { - .media-content { - overflow-x: auto; } } - -.menu { - font-size: 1rem; } - .menu.is-small, #documenter .docs-sidebar form.docs-search > input.menu { - font-size: 0.75rem; } - .menu.is-medium { - font-size: 1.25rem; } - .menu.is-large { - font-size: 1.5rem; } - -.menu-list { - line-height: 1.25; } - .menu-list a { - border-radius: 2px; - color: #222222; - display: block; - padding: 0.5em 0.75em; } - .menu-list a:hover { - background-color: whitesmoke; - color: #222222; } - .menu-list a.is-active { - background-color: #2e63b8; - color: #fff; } - .menu-list li ul { - border-left: 1px solid #dbdbdb; - margin: 0.75em; - padding-left: 0.75em; } - -.menu-label { - color: #7a7a7a; - font-size: 0.75em; - letter-spacing: 0.1em; - text-transform: uppercase; } - .menu-label:not(:first-child) { - margin-top: 1em; } - .menu-label:not(:last-child) { - margin-bottom: 1em; } - -.message { - background-color: whitesmoke; - border-radius: 4px; - font-size: 1rem; } - .message strong { - color: currentColor; } - .message a:not(.button):not(.tag):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - .message.is-small, #documenter .docs-sidebar form.docs-search > input.message { - font-size: 0.75rem; } - .message.is-medium { - font-size: 1.25rem; } - .message.is-large { - font-size: 1.5rem; } - .message.is-white { - background-color: white; } - .message.is-white .message-header { - background-color: white; - color: #0a0a0a; } - .message.is-white .message-body { - border-color: white; - color: #4d4d4d; } - .message.is-black { - background-color: #fafafa; } - .message.is-black .message-header { - background-color: #0a0a0a; - color: white; } - .message.is-black .message-body { - border-color: #0a0a0a; - color: #090909; } - .message.is-light { - background-color: #fafafa; } - .message.is-light .message-header { - background-color: whitesmoke; - color: #363636; } - .message.is-light .message-body { - border-color: whitesmoke; - color: #505050; } - .message.is-dark, .content kbd.message { - background-color: #fafafa; } - .message.is-dark .message-header, .content kbd.message .message-header { - background-color: #363636; - color: whitesmoke; } - .message.is-dark .message-body, .content kbd.message .message-body { - border-color: #363636; - color: #2a2a2a; } - .message.is-primary, .docstring > section > a.message.docs-sourcelink { - background-color: #f6fbfd; } - .message.is-primary .message-header, .docstring > section > a.message.docs-sourcelink .message-header { - background-color: #4eb5de; - color: #fff; } - .message.is-primary .message-body, .docstring > section > a.message.docs-sourcelink .message-body { - border-color: #4eb5de; - color: #1f556a; } - .message.is-link { - background-color: #f7f9fd; } - .message.is-link .message-header { - background-color: #2e63b8; - color: #fff; } - .message.is-link .message-body { - border-color: #2e63b8; - color: #264981; } - .message.is-info { - background-color: #f6fbfe; } - .message.is-info .message-header { - background-color: #209cee; - color: #fff; } - .message.is-info .message-body { - border-color: #209cee; - color: #12537e; } - .message.is-success { - background-color: #f6fdf9; } - .message.is-success .message-header { - background-color: #22c35b; - color: #fff; } - .message.is-success .message-body { - border-color: #22c35b; - color: #0f361d; } - .message.is-warning { - background-color: #fffdf5; } - .message.is-warning .message-header { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .message.is-warning .message-body { - border-color: #ffdd57; - color: #3b3108; } - .message.is-danger { - background-color: #fff5f5; } - .message.is-danger .message-header { - background-color: #da0b00; - color: #fff; } - .message.is-danger .message-body { - border-color: #da0b00; - color: #9b0c04; } - -.message-header { - align-items: center; - background-color: #222222; - border-radius: 4px 4px 0 0; - color: #fff; - display: flex; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - .message-header .delete { - flex-grow: 0; - flex-shrink: 0; - margin-left: 0.75em; } - .message-header + .message-body { - border-width: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.message-body { - border-color: #dbdbdb; - border-radius: 4px; - border-style: solid; - border-width: 0 0 0 4px; - color: #222222; - padding: 1em 1.25em; } - .message-body code, - .message-body pre { - background-color: white; } - .message-body pre code { - background-color: transparent; } - -.modal { - align-items: center; - display: none; - flex-direction: column; - justify-content: center; - overflow: hidden; - position: fixed; - z-index: 40; } - .modal.is-active { - display: flex; } - -.modal-background { - background-color: rgba(10, 10, 10, 0.86); } - -.modal-content, -.modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; } - @media screen and (min-width: 769px), print { - .modal-content, - .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; } } - -.modal-close { - background: none; - height: 40px; - position: fixed; - right: 20px; - top: 20px; - width: 40px; } - -.modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; - -ms-overflow-y: visible; } - -.modal-card-head, -.modal-card-foot { - align-items: center; - background-color: whitesmoke; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; } - -.modal-card-head { - border-bottom: 1px solid #dbdbdb; - border-top-left-radius: 6px; - border-top-right-radius: 6px; } - -.modal-card-title { - color: #222222; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; } - -.modal-card-foot { - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 1px solid #dbdbdb; } - .modal-card-foot .button:not(:last-child) { - margin-right: 0.5em; } - -.modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: white; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; } - -.navbar { - background-color: white; - min-height: 3.25rem; - position: relative; - z-index: 30; } - .navbar.is-white { - background-color: white; - color: #0a0a0a; } - .navbar.is-white .navbar-brand > .navbar-item, - .navbar.is-white .navbar-brand .navbar-link { - color: #0a0a0a; } - .navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, - .navbar.is-white .navbar-brand .navbar-link:focus, - .navbar.is-white .navbar-brand .navbar-link:hover, - .navbar.is-white .navbar-brand .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - .navbar.is-white .navbar-brand .navbar-link::after { - border-color: #0a0a0a; } - .navbar.is-white .navbar-burger { - color: #0a0a0a; } - @media screen and (min-width: 1056px) { - .navbar.is-white .navbar-start > .navbar-item, - .navbar.is-white .navbar-start .navbar-link, - .navbar.is-white .navbar-end > .navbar-item, - .navbar.is-white .navbar-end .navbar-link { - color: #0a0a0a; } - .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, - .navbar.is-white .navbar-start .navbar-link:focus, - .navbar.is-white .navbar-start .navbar-link:hover, - .navbar.is-white .navbar-start .navbar-link.is-active, - .navbar.is-white .navbar-end > a.navbar-item:focus, - .navbar.is-white .navbar-end > a.navbar-item:hover, - .navbar.is-white .navbar-end > a.navbar-item.is-active, - .navbar.is-white .navbar-end .navbar-link:focus, - .navbar.is-white .navbar-end .navbar-link:hover, - .navbar.is-white .navbar-end .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - .navbar.is-white .navbar-start .navbar-link::after, - .navbar.is-white .navbar-end .navbar-link::after { - border-color: #0a0a0a; } - .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #f2f2f2; - color: #0a0a0a; } - .navbar.is-white .navbar-dropdown a.navbar-item.is-active { - background-color: white; - color: #0a0a0a; } } - .navbar.is-black { - background-color: #0a0a0a; - color: white; } - .navbar.is-black .navbar-brand > .navbar-item, - .navbar.is-black .navbar-brand .navbar-link { - color: white; } - .navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, - .navbar.is-black .navbar-brand .navbar-link:focus, - .navbar.is-black .navbar-brand .navbar-link:hover, - .navbar.is-black .navbar-brand .navbar-link.is-active { - background-color: black; - color: white; } - .navbar.is-black .navbar-brand .navbar-link::after { - border-color: white; } - .navbar.is-black .navbar-burger { - color: white; } - @media screen and (min-width: 1056px) { - .navbar.is-black .navbar-start > .navbar-item, - .navbar.is-black .navbar-start .navbar-link, - .navbar.is-black .navbar-end > .navbar-item, - .navbar.is-black .navbar-end .navbar-link { - color: white; } - .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, - .navbar.is-black .navbar-start .navbar-link:focus, - .navbar.is-black .navbar-start .navbar-link:hover, - .navbar.is-black .navbar-start .navbar-link.is-active, - .navbar.is-black .navbar-end > a.navbar-item:focus, - .navbar.is-black .navbar-end > a.navbar-item:hover, - .navbar.is-black .navbar-end > a.navbar-item.is-active, - .navbar.is-black .navbar-end .navbar-link:focus, - .navbar.is-black .navbar-end .navbar-link:hover, - .navbar.is-black .navbar-end .navbar-link.is-active { - background-color: black; - color: white; } - .navbar.is-black .navbar-start .navbar-link::after, - .navbar.is-black .navbar-end .navbar-link::after { - border-color: white; } - .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { - background-color: black; - color: white; } - .navbar.is-black .navbar-dropdown a.navbar-item.is-active { - background-color: #0a0a0a; - color: white; } } - .navbar.is-light { - background-color: whitesmoke; - color: #363636; } - .navbar.is-light .navbar-brand > .navbar-item, - .navbar.is-light .navbar-brand .navbar-link { - color: #363636; } - .navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, - .navbar.is-light .navbar-brand .navbar-link:focus, - .navbar.is-light .navbar-brand .navbar-link:hover, - .navbar.is-light .navbar-brand .navbar-link.is-active { - background-color: #e8e8e8; - color: #363636; } - .navbar.is-light .navbar-brand .navbar-link::after { - border-color: #363636; } - .navbar.is-light .navbar-burger { - color: #363636; } - @media screen and (min-width: 1056px) { - .navbar.is-light .navbar-start > .navbar-item, - .navbar.is-light .navbar-start .navbar-link, - .navbar.is-light .navbar-end > .navbar-item, - .navbar.is-light .navbar-end .navbar-link { - color: #363636; } - .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, - .navbar.is-light .navbar-start .navbar-link:focus, - .navbar.is-light .navbar-start .navbar-link:hover, - .navbar.is-light .navbar-start .navbar-link.is-active, - .navbar.is-light .navbar-end > a.navbar-item:focus, - .navbar.is-light .navbar-end > a.navbar-item:hover, - .navbar.is-light .navbar-end > a.navbar-item.is-active, - .navbar.is-light .navbar-end .navbar-link:focus, - .navbar.is-light .navbar-end .navbar-link:hover, - .navbar.is-light .navbar-end .navbar-link.is-active { - background-color: #e8e8e8; - color: #363636; } - .navbar.is-light .navbar-start .navbar-link::after, - .navbar.is-light .navbar-end .navbar-link::after { - border-color: #363636; } - .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #e8e8e8; - color: #363636; } - .navbar.is-light .navbar-dropdown a.navbar-item.is-active { - background-color: whitesmoke; - color: #363636; } } - .navbar.is-dark, .content kbd.navbar { - background-color: #363636; - color: whitesmoke; } - .navbar.is-dark .navbar-brand > .navbar-item, .content kbd.navbar .navbar-brand > .navbar-item, - .navbar.is-dark .navbar-brand .navbar-link, - .content kbd.navbar .navbar-brand .navbar-link { - color: whitesmoke; } - .navbar.is-dark .navbar-brand > a.navbar-item:focus, .content kbd.navbar .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .content kbd.navbar .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, .content kbd.navbar .navbar-brand > a.navbar-item.is-active, - .navbar.is-dark .navbar-brand .navbar-link:focus, - .content kbd.navbar .navbar-brand .navbar-link:focus, - .navbar.is-dark .navbar-brand .navbar-link:hover, - .content kbd.navbar .navbar-brand .navbar-link:hover, - .navbar.is-dark .navbar-brand .navbar-link.is-active, - .content kbd.navbar .navbar-brand .navbar-link.is-active { - background-color: #292929; - color: whitesmoke; } - .navbar.is-dark .navbar-brand .navbar-link::after, .content kbd.navbar .navbar-brand .navbar-link::after { - border-color: whitesmoke; } - .navbar.is-dark .navbar-burger, .content kbd.navbar .navbar-burger { - color: whitesmoke; } - @media screen and (min-width: 1056px) { - .navbar.is-dark .navbar-start > .navbar-item, .content kbd.navbar .navbar-start > .navbar-item, - .navbar.is-dark .navbar-start .navbar-link, - .content kbd.navbar .navbar-start .navbar-link, - .navbar.is-dark .navbar-end > .navbar-item, - .content kbd.navbar .navbar-end > .navbar-item, - .navbar.is-dark .navbar-end .navbar-link, - .content kbd.navbar .navbar-end .navbar-link { - color: whitesmoke; } - .navbar.is-dark .navbar-start > a.navbar-item:focus, .content kbd.navbar .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .content kbd.navbar .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, .content kbd.navbar .navbar-start > a.navbar-item.is-active, - .navbar.is-dark .navbar-start .navbar-link:focus, - .content kbd.navbar .navbar-start .navbar-link:focus, - .navbar.is-dark .navbar-start .navbar-link:hover, - .content kbd.navbar .navbar-start .navbar-link:hover, - .navbar.is-dark .navbar-start .navbar-link.is-active, - .content kbd.navbar .navbar-start .navbar-link.is-active, - .navbar.is-dark .navbar-end > a.navbar-item:focus, - .content kbd.navbar .navbar-end > a.navbar-item:focus, - .navbar.is-dark .navbar-end > a.navbar-item:hover, - .content kbd.navbar .navbar-end > a.navbar-item:hover, - .navbar.is-dark .navbar-end > a.navbar-item.is-active, - .content kbd.navbar .navbar-end > a.navbar-item.is-active, - .navbar.is-dark .navbar-end .navbar-link:focus, - .content kbd.navbar .navbar-end .navbar-link:focus, - .navbar.is-dark .navbar-end .navbar-link:hover, - .content kbd.navbar .navbar-end .navbar-link:hover, - .navbar.is-dark .navbar-end .navbar-link.is-active, - .content kbd.navbar .navbar-end .navbar-link.is-active { - background-color: #292929; - color: whitesmoke; } - .navbar.is-dark .navbar-start .navbar-link::after, .content kbd.navbar .navbar-start .navbar-link::after, - .navbar.is-dark .navbar-end .navbar-link::after, - .content kbd.navbar .navbar-end .navbar-link::after { - border-color: whitesmoke; } - .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, - .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, - .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #292929; - color: whitesmoke; } - .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { - background-color: #363636; - color: whitesmoke; } } - .navbar.is-primary, .docstring > section > a.navbar.docs-sourcelink { - background-color: #4eb5de; - color: #fff; } - .navbar.is-primary .navbar-brand > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, - .navbar.is-primary .navbar-brand .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-primary .navbar-brand > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, - .navbar.is-primary .navbar-brand .navbar-link:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, - .navbar.is-primary .navbar-brand .navbar-link:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, - .navbar.is-primary .navbar-brand .navbar-link.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { - background-color: #39acda; - color: #fff; } - .navbar.is-primary .navbar-brand .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-primary .navbar-burger, .docstring > section > a.navbar.docs-sourcelink .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-primary .navbar-start > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, - .navbar.is-primary .navbar-start .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, - .navbar.is-primary .navbar-end > .navbar-item, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, - .navbar.is-primary .navbar-end .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { - color: #fff; } - .navbar.is-primary .navbar-start > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, - .navbar.is-primary .navbar-start .navbar-link:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, - .navbar.is-primary .navbar-start .navbar-link:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, - .navbar.is-primary .navbar-start .navbar-link.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, - .navbar.is-primary .navbar-end > a.navbar-item:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, - .navbar.is-primary .navbar-end > a.navbar-item:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, - .navbar.is-primary .navbar-end > a.navbar-item.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, - .navbar.is-primary .navbar-end .navbar-link:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, - .navbar.is-primary .navbar-end .navbar-link:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, - .navbar.is-primary .navbar-end .navbar-link.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { - background-color: #39acda; - color: #fff; } - .navbar.is-primary .navbar-start .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, - .navbar.is-primary .navbar-end .navbar-link::after, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #39acda; - color: #fff; } - .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { - background-color: #4eb5de; - color: #fff; } } - .navbar.is-link { - background-color: #2e63b8; - color: #fff; } - .navbar.is-link .navbar-brand > .navbar-item, - .navbar.is-link .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, - .navbar.is-link .navbar-brand .navbar-link:focus, - .navbar.is-link .navbar-brand .navbar-link:hover, - .navbar.is-link .navbar-brand .navbar-link.is-active { - background-color: #2958a4; - color: #fff; } - .navbar.is-link .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-link .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-link .navbar-start > .navbar-item, - .navbar.is-link .navbar-start .navbar-link, - .navbar.is-link .navbar-end > .navbar-item, - .navbar.is-link .navbar-end .navbar-link { - color: #fff; } - .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, - .navbar.is-link .navbar-start .navbar-link:focus, - .navbar.is-link .navbar-start .navbar-link:hover, - .navbar.is-link .navbar-start .navbar-link.is-active, - .navbar.is-link .navbar-end > a.navbar-item:focus, - .navbar.is-link .navbar-end > a.navbar-item:hover, - .navbar.is-link .navbar-end > a.navbar-item.is-active, - .navbar.is-link .navbar-end .navbar-link:focus, - .navbar.is-link .navbar-end .navbar-link:hover, - .navbar.is-link .navbar-end .navbar-link.is-active { - background-color: #2958a4; - color: #fff; } - .navbar.is-link .navbar-start .navbar-link::after, - .navbar.is-link .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #2958a4; - color: #fff; } - .navbar.is-link .navbar-dropdown a.navbar-item.is-active { - background-color: #2e63b8; - color: #fff; } } - .navbar.is-info { - background-color: #209cee; - color: #fff; } - .navbar.is-info .navbar-brand > .navbar-item, - .navbar.is-info .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, - .navbar.is-info .navbar-brand .navbar-link:focus, - .navbar.is-info .navbar-brand .navbar-link:hover, - .navbar.is-info .navbar-brand .navbar-link.is-active { - background-color: #118fe4; - color: #fff; } - .navbar.is-info .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-info .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-info .navbar-start > .navbar-item, - .navbar.is-info .navbar-start .navbar-link, - .navbar.is-info .navbar-end > .navbar-item, - .navbar.is-info .navbar-end .navbar-link { - color: #fff; } - .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, - .navbar.is-info .navbar-start .navbar-link:focus, - .navbar.is-info .navbar-start .navbar-link:hover, - .navbar.is-info .navbar-start .navbar-link.is-active, - .navbar.is-info .navbar-end > a.navbar-item:focus, - .navbar.is-info .navbar-end > a.navbar-item:hover, - .navbar.is-info .navbar-end > a.navbar-item.is-active, - .navbar.is-info .navbar-end .navbar-link:focus, - .navbar.is-info .navbar-end .navbar-link:hover, - .navbar.is-info .navbar-end .navbar-link.is-active { - background-color: #118fe4; - color: #fff; } - .navbar.is-info .navbar-start .navbar-link::after, - .navbar.is-info .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #118fe4; - color: #fff; } - .navbar.is-info .navbar-dropdown a.navbar-item.is-active { - background-color: #209cee; - color: #fff; } } - .navbar.is-success { - background-color: #22c35b; - color: #fff; } - .navbar.is-success .navbar-brand > .navbar-item, - .navbar.is-success .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, - .navbar.is-success .navbar-brand .navbar-link:focus, - .navbar.is-success .navbar-brand .navbar-link:hover, - .navbar.is-success .navbar-brand .navbar-link.is-active { - background-color: #1ead51; - color: #fff; } - .navbar.is-success .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-success .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-success .navbar-start > .navbar-item, - .navbar.is-success .navbar-start .navbar-link, - .navbar.is-success .navbar-end > .navbar-item, - .navbar.is-success .navbar-end .navbar-link { - color: #fff; } - .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, - .navbar.is-success .navbar-start .navbar-link:focus, - .navbar.is-success .navbar-start .navbar-link:hover, - .navbar.is-success .navbar-start .navbar-link.is-active, - .navbar.is-success .navbar-end > a.navbar-item:focus, - .navbar.is-success .navbar-end > a.navbar-item:hover, - .navbar.is-success .navbar-end > a.navbar-item.is-active, - .navbar.is-success .navbar-end .navbar-link:focus, - .navbar.is-success .navbar-end .navbar-link:hover, - .navbar.is-success .navbar-end .navbar-link.is-active { - background-color: #1ead51; - color: #fff; } - .navbar.is-success .navbar-start .navbar-link::after, - .navbar.is-success .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #1ead51; - color: #fff; } - .navbar.is-success .navbar-dropdown a.navbar-item.is-active { - background-color: #22c35b; - color: #fff; } } - .navbar.is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-brand > .navbar-item, - .navbar.is-warning .navbar-brand .navbar-link { - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, - .navbar.is-warning .navbar-brand .navbar-link:focus, - .navbar.is-warning .navbar-brand .navbar-link:hover, - .navbar.is-warning .navbar-brand .navbar-link.is-active { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-brand .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-burger { - color: rgba(0, 0, 0, 0.7); } - @media screen and (min-width: 1056px) { - .navbar.is-warning .navbar-start > .navbar-item, - .navbar.is-warning .navbar-start .navbar-link, - .navbar.is-warning .navbar-end > .navbar-item, - .navbar.is-warning .navbar-end .navbar-link { - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, - .navbar.is-warning .navbar-start .navbar-link:focus, - .navbar.is-warning .navbar-start .navbar-link:hover, - .navbar.is-warning .navbar-start .navbar-link.is-active, - .navbar.is-warning .navbar-end > a.navbar-item:focus, - .navbar.is-warning .navbar-end > a.navbar-item:hover, - .navbar.is-warning .navbar-end > a.navbar-item.is-active, - .navbar.is-warning .navbar-end .navbar-link:focus, - .navbar.is-warning .navbar-end .navbar-link:hover, - .navbar.is-warning .navbar-end .navbar-link.is-active { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-start .navbar-link::after, - .navbar.is-warning .navbar-end .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } } - .navbar.is-danger { - background-color: #da0b00; - color: #fff; } - .navbar.is-danger .navbar-brand > .navbar-item, - .navbar.is-danger .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, - .navbar.is-danger .navbar-brand .navbar-link:focus, - .navbar.is-danger .navbar-brand .navbar-link:hover, - .navbar.is-danger .navbar-brand .navbar-link.is-active { - background-color: #c10a00; - color: #fff; } - .navbar.is-danger .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-danger .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-danger .navbar-start > .navbar-item, - .navbar.is-danger .navbar-start .navbar-link, - .navbar.is-danger .navbar-end > .navbar-item, - .navbar.is-danger .navbar-end .navbar-link { - color: #fff; } - .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, - .navbar.is-danger .navbar-start .navbar-link:focus, - .navbar.is-danger .navbar-start .navbar-link:hover, - .navbar.is-danger .navbar-start .navbar-link.is-active, - .navbar.is-danger .navbar-end > a.navbar-item:focus, - .navbar.is-danger .navbar-end > a.navbar-item:hover, - .navbar.is-danger .navbar-end > a.navbar-item.is-active, - .navbar.is-danger .navbar-end .navbar-link:focus, - .navbar.is-danger .navbar-end .navbar-link:hover, - .navbar.is-danger .navbar-end .navbar-link.is-active { - background-color: #c10a00; - color: #fff; } - .navbar.is-danger .navbar-start .navbar-link::after, - .navbar.is-danger .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #c10a00; - color: #fff; } - .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { - background-color: #da0b00; - color: #fff; } } - .navbar > .container { - align-items: stretch; - display: flex; - min-height: 3.25rem; - width: 100%; } - .navbar.has-shadow { - box-shadow: 0 2px 0 0 whitesmoke; } - .navbar.is-fixed-bottom, .navbar.is-fixed-top { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - .navbar.is-fixed-bottom { - bottom: 0; } - .navbar.is-fixed-bottom.has-shadow { - box-shadow: 0 -2px 0 0 whitesmoke; } - .navbar.is-fixed-top { - top: 0; } - -html.has-navbar-fixed-top, -body.has-navbar-fixed-top { - padding-top: 3.25rem; } - -html.has-navbar-fixed-bottom, -body.has-navbar-fixed-bottom { - padding-bottom: 3.25rem; } - -.navbar-brand, -.navbar-tabs { - align-items: stretch; - display: flex; - flex-shrink: 0; - min-height: 3.25rem; } - -.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { - background-color: transparent; } - -.navbar-tabs { - -webkit-overflow-scrolling: touch; - max-width: 100vw; - overflow-x: auto; - overflow-y: hidden; } - -.navbar-burger { - color: #4a4a4a; - cursor: pointer; - display: block; - height: 3.25rem; - position: relative; - width: 3.25rem; - margin-left: auto; } - .navbar-burger span { - background-color: currentColor; - display: block; - height: 1px; - left: calc(50% - 8px); - position: absolute; - transform-origin: center; - transition-duration: 86ms; - transition-property: background-color, opacity, transform; - transition-timing-function: ease-out; - width: 16px; } - .navbar-burger span:nth-child(1) { - top: calc(50% - 6px); } - .navbar-burger span:nth-child(2) { - top: calc(50% - 1px); } - .navbar-burger span:nth-child(3) { - top: calc(50% + 4px); } - .navbar-burger:hover { - background-color: rgba(0, 0, 0, 0.05); } - .navbar-burger.is-active span:nth-child(1) { - transform: translateY(5px) rotate(45deg); } - .navbar-burger.is-active span:nth-child(2) { - opacity: 0; } - .navbar-burger.is-active span:nth-child(3) { - transform: translateY(-5px) rotate(-45deg); } - -.navbar-menu { - display: none; } - -.navbar-item, -.navbar-link { - color: #4a4a4a; - display: block; - line-height: 1.5; - padding: 0.5rem 0.75rem; - position: relative; } - .navbar-item .icon:only-child, - .navbar-link .icon:only-child { - margin-left: -0.25rem; - margin-right: -0.25rem; } - -a.navbar-item, -.navbar-link { - cursor: pointer; } - a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, - .navbar-link:focus, - .navbar-link:focus-within, - .navbar-link:hover, - .navbar-link.is-active { - background-color: #fafafa; - color: #2e63b8; } - -.navbar-item { - display: block; - flex-grow: 0; - flex-shrink: 0; } - .navbar-item img { - max-height: 1.75rem; } - .navbar-item.has-dropdown { - padding: 0; } - .navbar-item.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .navbar-item.is-tab { - border-bottom: 1px solid transparent; - min-height: 3.25rem; - padding-bottom: calc(0.5rem - 1px); } - .navbar-item.is-tab:focus, .navbar-item.is-tab:hover { - background-color: transparent; - border-bottom-color: #2e63b8; } - .navbar-item.is-tab.is-active { - background-color: transparent; - border-bottom-color: #2e63b8; - border-bottom-style: solid; - border-bottom-width: 3px; - color: #2e63b8; - padding-bottom: calc(0.5rem - 3px); } - -.navbar-content { - flex-grow: 1; - flex-shrink: 1; } - -.navbar-link:not(.is-arrowless) { - padding-right: 2.5em; } - .navbar-link:not(.is-arrowless)::after { - border-color: #2e63b8; - margin-top: -0.375em; - right: 1.125em; } - -.navbar-dropdown { - font-size: 0.875rem; - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - .navbar-dropdown .navbar-item { - padding-left: 1.5rem; - padding-right: 1.5rem; } - -.navbar-divider { - background-color: whitesmoke; - border: none; - display: none; - height: 2px; - margin: 0.5rem 0; } - -@media screen and (max-width: 1055px) { - .navbar > .container { - display: block; } - .navbar-brand .navbar-item, - .navbar-tabs .navbar-item { - align-items: center; - display: flex; } - .navbar-link::after { - display: none; } - .navbar-menu { - background-color: white; - box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); - padding: 0.5rem 0; } - .navbar-menu.is-active { - display: block; } - .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - .navbar.is-fixed-bottom-touch { - bottom: 0; } - .navbar.is-fixed-bottom-touch.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - .navbar.is-fixed-top-touch { - top: 0; } - .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { - -webkit-overflow-scrolling: touch; - max-height: calc(100vh - 3.25rem); - overflow: auto; } - html.has-navbar-fixed-top-touch, - body.has-navbar-fixed-top-touch { - padding-top: 3.25rem; } - html.has-navbar-fixed-bottom-touch, - body.has-navbar-fixed-bottom-touch { - padding-bottom: 3.25rem; } } - -@media screen and (min-width: 1056px) { - .navbar, - .navbar-menu, - .navbar-start, - .navbar-end { - align-items: stretch; - display: flex; } - .navbar { - min-height: 3.25rem; } - .navbar.is-spaced { - padding: 1rem 2rem; } - .navbar.is-spaced .navbar-start, - .navbar.is-spaced .navbar-end { - align-items: center; } - .navbar.is-spaced a.navbar-item, - .navbar.is-spaced .navbar-link { - border-radius: 4px; } - .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, - .navbar.is-transparent .navbar-link:focus, - .navbar.is-transparent .navbar-link:hover, - .navbar.is-transparent .navbar-link.is-active { - background-color: transparent !important; } - .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { - background-color: transparent !important; } - .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { - background-color: whitesmoke; - color: #0a0a0a; } - .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { - background-color: whitesmoke; - color: #2e63b8; } - .navbar-burger { - display: none; } - .navbar-item, - .navbar-link { - align-items: center; - display: flex; } - .navbar-item { - display: flex; } - .navbar-item.has-dropdown { - align-items: stretch; } - .navbar-item.has-dropdown-up .navbar-link::after { - transform: rotate(135deg) translate(0.25em, -0.25em); } - .navbar-item.has-dropdown-up .navbar-dropdown { - border-bottom: 2px solid #dbdbdb; - border-radius: 6px 6px 0 0; - border-top: none; - bottom: 100%; - box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); - top: auto; } - .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { - display: block; } - .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { - opacity: 1; - pointer-events: auto; - transform: translateY(0); } - .navbar-menu { - flex-grow: 1; - flex-shrink: 0; } - .navbar-start { - justify-content: flex-start; - margin-right: auto; } - .navbar-end { - justify-content: flex-end; - margin-left: auto; } - .navbar-dropdown { - background-color: white; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 2px solid #dbdbdb; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); - display: none; - font-size: 0.875rem; - left: 0; - min-width: 100%; - position: absolute; - top: 100%; - z-index: 20; } - .navbar-dropdown .navbar-item { - padding: 0.375rem 1rem; - white-space: nowrap; } - .navbar-dropdown a.navbar-item { - padding-right: 3rem; } - .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { - background-color: whitesmoke; - color: #0a0a0a; } - .navbar-dropdown a.navbar-item.is-active { - background-color: whitesmoke; - color: #2e63b8; } - .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { - border-radius: 6px; - border-top: none; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - display: block; - opacity: 0; - pointer-events: none; - top: calc(100% + (-4px)); - transform: translateY(-5px); - transition-duration: 86ms; - transition-property: opacity, transform; } - .navbar-dropdown.is-right { - left: auto; - right: 0; } - .navbar-divider { - display: block; } - .navbar > .container .navbar-brand, - .container > .navbar .navbar-brand { - margin-left: -.75rem; } - .navbar > .container .navbar-menu, - .container > .navbar .navbar-menu { - margin-right: -.75rem; } - .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - .navbar.is-fixed-bottom-desktop { - bottom: 0; } - .navbar.is-fixed-bottom-desktop.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - .navbar.is-fixed-top-desktop { - top: 0; } - html.has-navbar-fixed-top-desktop, - body.has-navbar-fixed-top-desktop { - padding-top: 3.25rem; } - html.has-navbar-fixed-bottom-desktop, - body.has-navbar-fixed-bottom-desktop { - padding-bottom: 3.25rem; } - html.has-spaced-navbar-fixed-top, - body.has-spaced-navbar-fixed-top { - padding-top: 5.25rem; } - html.has-spaced-navbar-fixed-bottom, - body.has-spaced-navbar-fixed-bottom { - padding-bottom: 5.25rem; } - a.navbar-item.is-active, - .navbar-link.is-active { - color: #0a0a0a; } - a.navbar-item.is-active:not(:focus):not(:hover), - .navbar-link.is-active:not(:focus):not(:hover) { - background-color: transparent; } - .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #fafafa; } } - -.hero.is-fullheight-with-navbar { - min-height: calc(100vh - 3.25rem); } - -.pagination { - font-size: 1rem; - margin: -0.25rem; } - .pagination.is-small, #documenter .docs-sidebar form.docs-search > input.pagination { - font-size: 0.75rem; } - .pagination.is-medium { - font-size: 1.25rem; } - .pagination.is-large { - font-size: 1.5rem; } - .pagination.is-rounded .pagination-previous, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, - .pagination.is-rounded .pagination-next, - #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { - padding-left: 1em; - padding-right: 1em; - border-radius: 290486px; } - .pagination.is-rounded .pagination-link, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { - border-radius: 290486px; } - -.pagination, -.pagination-list { - align-items: center; - display: flex; - justify-content: center; - text-align: center; } - -.pagination-previous, -.pagination-next, -.pagination-link, -.pagination-ellipsis { - font-size: 1em; - justify-content: center; - margin: 0.25rem; - padding-left: 0.5em; - padding-right: 0.5em; - text-align: center; } - -.pagination-previous, -.pagination-next, -.pagination-link { - border-color: #dbdbdb; - color: #363636; - min-width: 2.25em; } - .pagination-previous:hover, - .pagination-next:hover, - .pagination-link:hover { - border-color: #b5b5b5; - color: #363636; } - .pagination-previous:focus, - .pagination-next:focus, - .pagination-link:focus { - border-color: #2e63b8; } - .pagination-previous:active, - .pagination-next:active, - .pagination-link:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } - .pagination-previous[disabled], - .pagination-next[disabled], - .pagination-link[disabled] { - background-color: #dbdbdb; - border-color: #dbdbdb; - box-shadow: none; - color: #7a7a7a; - opacity: 0.5; } - -.pagination-previous, -.pagination-next { - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - -.pagination-link.is-current { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; } - -.pagination-ellipsis { - color: #b5b5b5; - pointer-events: none; } - -.pagination-list { - flex-wrap: wrap; } - -@media screen and (max-width: 768px) { - .pagination { - flex-wrap: wrap; } - .pagination-previous, - .pagination-next { - flex-grow: 1; - flex-shrink: 1; } - .pagination-list li { - flex-grow: 1; - flex-shrink: 1; } } - -@media screen and (min-width: 769px), print { - .pagination-list { - flex-grow: 1; - flex-shrink: 1; - justify-content: flex-start; - order: 1; } - .pagination-previous { - order: 2; } - .pagination-next { - order: 3; } - .pagination { - justify-content: space-between; } - .pagination.is-centered .pagination-previous { - order: 1; } - .pagination.is-centered .pagination-list { - justify-content: center; - order: 2; } - .pagination.is-centered .pagination-next { - order: 3; } - .pagination.is-right .pagination-previous { - order: 1; } - .pagination.is-right .pagination-next { - order: 2; } - .pagination.is-right .pagination-list { - justify-content: flex-end; - order: 3; } } - -.panel { - font-size: 1rem; } - .panel:not(:last-child) { - margin-bottom: 1.5rem; } - -.panel-heading, -.panel-tabs, -.panel-block { - border-bottom: 1px solid #dbdbdb; - border-left: 1px solid #dbdbdb; - border-right: 1px solid #dbdbdb; } - .panel-heading:first-child, - .panel-tabs:first-child, - .panel-block:first-child { - border-top: 1px solid #dbdbdb; } - -.panel-heading { - background-color: whitesmoke; - border-radius: 4px 4px 0 0; - color: #222222; - font-size: 1.25em; - font-weight: 300; - line-height: 1.25; - padding: 0.5em 0.75em; } - -.panel-tabs { - align-items: flex-end; - display: flex; - font-size: 0.875em; - justify-content: center; } - .panel-tabs a { - border-bottom: 1px solid #dbdbdb; - margin-bottom: -1px; - padding: 0.5em; } - .panel-tabs a.is-active { - border-bottom-color: #4a4a4a; - color: #363636; } - -.panel-list a { - color: #222222; } - .panel-list a:hover { - color: #2e63b8; } - -.panel-block { - align-items: center; - color: #222222; - display: flex; - justify-content: flex-start; - padding: 0.5em 0.75em; } - .panel-block input[type="checkbox"] { - margin-right: 0.75em; } - .panel-block > .control { - flex-grow: 1; - flex-shrink: 1; - width: 100%; } - .panel-block.is-wrapped { - flex-wrap: wrap; } - .panel-block.is-active { - border-left-color: #2e63b8; - color: #363636; } - .panel-block.is-active .panel-icon { - color: #2e63b8; } - -a.panel-block, -label.panel-block { - cursor: pointer; } - a.panel-block:hover, - label.panel-block:hover { - background-color: whitesmoke; } - -.panel-icon { - display: inline-block; - font-size: 14px; - height: 1em; - line-height: 1em; - text-align: center; - vertical-align: top; - width: 1em; - color: #7a7a7a; - margin-right: 0.75em; } - .panel-icon .fa { - font-size: inherit; - line-height: inherit; } - -.tabs { - -webkit-overflow-scrolling: touch; - align-items: stretch; - display: flex; - font-size: 1rem; - justify-content: space-between; - overflow: hidden; - overflow-x: auto; - white-space: nowrap; } - .tabs a { - align-items: center; - border-bottom-color: #dbdbdb; - border-bottom-style: solid; - border-bottom-width: 1px; - color: #222222; - display: flex; - justify-content: center; - margin-bottom: -1px; - padding: 0.5em 1em; - vertical-align: top; } - .tabs a:hover { - border-bottom-color: #222222; - color: #222222; } - .tabs li { - display: block; } - .tabs li.is-active a { - border-bottom-color: #2e63b8; - color: #2e63b8; } - .tabs ul { - align-items: center; - border-bottom-color: #dbdbdb; - border-bottom-style: solid; - border-bottom-width: 1px; - display: flex; - flex-grow: 1; - flex-shrink: 0; - justify-content: flex-start; } - .tabs ul.is-left { - padding-right: 0.75em; } - .tabs ul.is-center { - flex: none; - justify-content: center; - padding-left: 0.75em; - padding-right: 0.75em; } - .tabs ul.is-right { - justify-content: flex-end; - padding-left: 0.75em; } - .tabs .icon:first-child { - margin-right: 0.5em; } - .tabs .icon:last-child { - margin-left: 0.5em; } - .tabs.is-centered ul { - justify-content: center; } - .tabs.is-right ul { - justify-content: flex-end; } - .tabs.is-boxed a { - border: 1px solid transparent; - border-radius: 4px 4px 0 0; } - .tabs.is-boxed a:hover { - background-color: whitesmoke; - border-bottom-color: #dbdbdb; } - .tabs.is-boxed li.is-active a { - background-color: white; - border-color: #dbdbdb; - border-bottom-color: transparent !important; } - .tabs.is-fullwidth li { - flex-grow: 1; - flex-shrink: 0; } - .tabs.is-toggle a { - border-color: #dbdbdb; - border-style: solid; - border-width: 1px; - margin-bottom: 0; - position: relative; } - .tabs.is-toggle a:hover { - background-color: whitesmoke; - border-color: #b5b5b5; - z-index: 2; } - .tabs.is-toggle li + li { - margin-left: -1px; } - .tabs.is-toggle li:first-child a { - border-radius: 4px 0 0 4px; } - .tabs.is-toggle li:last-child a { - border-radius: 0 4px 4px 0; } - .tabs.is-toggle li.is-active a { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; - z-index: 1; } - .tabs.is-toggle ul { - border-bottom: none; } - .tabs.is-toggle.is-toggle-rounded li:first-child a { - border-bottom-left-radius: 290486px; - border-top-left-radius: 290486px; - padding-left: 1.25em; } - .tabs.is-toggle.is-toggle-rounded li:last-child a { - border-bottom-right-radius: 290486px; - border-top-right-radius: 290486px; - padding-right: 1.25em; } - .tabs.is-small, #documenter .docs-sidebar form.docs-search > input.tabs { - font-size: 0.75rem; } - .tabs.is-medium { - font-size: 1.25rem; } - .tabs.is-large { - font-size: 1.5rem; } - -.column { - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - padding: 0.75rem; } - .columns.is-mobile > .column.is-narrow { - flex: none; } - .columns.is-mobile > .column.is-full { - flex: none; - width: 100%; } - .columns.is-mobile > .column.is-three-quarters { - flex: none; - width: 75%; } - .columns.is-mobile > .column.is-two-thirds { - flex: none; - width: 66.6666%; } - .columns.is-mobile > .column.is-half { - flex: none; - width: 50%; } - .columns.is-mobile > .column.is-one-third { - flex: none; - width: 33.3333%; } - .columns.is-mobile > .column.is-one-quarter { - flex: none; - width: 25%; } - .columns.is-mobile > .column.is-one-fifth { - flex: none; - width: 20%; } - .columns.is-mobile > .column.is-two-fifths { - flex: none; - width: 40%; } - .columns.is-mobile > .column.is-three-fifths { - flex: none; - width: 60%; } - .columns.is-mobile > .column.is-four-fifths { - flex: none; - width: 80%; } - .columns.is-mobile > .column.is-offset-three-quarters { - margin-left: 75%; } - .columns.is-mobile > .column.is-offset-two-thirds { - margin-left: 66.6666%; } - .columns.is-mobile > .column.is-offset-half { - margin-left: 50%; } - .columns.is-mobile > .column.is-offset-one-third { - margin-left: 33.3333%; } - .columns.is-mobile > .column.is-offset-one-quarter { - margin-left: 25%; } - .columns.is-mobile > .column.is-offset-one-fifth { - margin-left: 20%; } - .columns.is-mobile > .column.is-offset-two-fifths { - margin-left: 40%; } - .columns.is-mobile > .column.is-offset-three-fifths { - margin-left: 60%; } - .columns.is-mobile > .column.is-offset-four-fifths { - margin-left: 80%; } - .columns.is-mobile > .column.is-0 { - flex: none; - width: 0%; } - .columns.is-mobile > .column.is-offset-0 { - margin-left: 0%; } - .columns.is-mobile > .column.is-1 { - flex: none; - width: 8.33333%; } - .columns.is-mobile > .column.is-offset-1 { - margin-left: 8.33333%; } - .columns.is-mobile > .column.is-2 { - flex: none; - width: 16.66667%; } - .columns.is-mobile > .column.is-offset-2 { - margin-left: 16.66667%; } - .columns.is-mobile > .column.is-3 { - flex: none; - width: 25%; } - .columns.is-mobile > .column.is-offset-3 { - margin-left: 25%; } - .columns.is-mobile > .column.is-4 { - flex: none; - width: 33.33333%; } - .columns.is-mobile > .column.is-offset-4 { - margin-left: 33.33333%; } - .columns.is-mobile > .column.is-5 { - flex: none; - width: 41.66667%; } - .columns.is-mobile > .column.is-offset-5 { - margin-left: 41.66667%; } - .columns.is-mobile > .column.is-6 { - flex: none; - width: 50%; } - .columns.is-mobile > .column.is-offset-6 { - margin-left: 50%; } - .columns.is-mobile > .column.is-7 { - flex: none; - width: 58.33333%; } - .columns.is-mobile > .column.is-offset-7 { - margin-left: 58.33333%; } - .columns.is-mobile > .column.is-8 { - flex: none; - width: 66.66667%; } - .columns.is-mobile > .column.is-offset-8 { - margin-left: 66.66667%; } - .columns.is-mobile > .column.is-9 { - flex: none; - width: 75%; } - .columns.is-mobile > .column.is-offset-9 { - margin-left: 75%; } - .columns.is-mobile > .column.is-10 { - flex: none; - width: 83.33333%; } - .columns.is-mobile > .column.is-offset-10 { - margin-left: 83.33333%; } - .columns.is-mobile > .column.is-11 { - flex: none; - width: 91.66667%; } - .columns.is-mobile > .column.is-offset-11 { - margin-left: 91.66667%; } - .columns.is-mobile > .column.is-12 { - flex: none; - width: 100%; } - .columns.is-mobile > .column.is-offset-12 { - margin-left: 100%; } - @media screen and (max-width: 768px) { - .column.is-narrow-mobile { - flex: none; } - .column.is-full-mobile { - flex: none; - width: 100%; } - .column.is-three-quarters-mobile { - flex: none; - width: 75%; } - .column.is-two-thirds-mobile { - flex: none; - width: 66.6666%; } - .column.is-half-mobile { - flex: none; - width: 50%; } - .column.is-one-third-mobile { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-mobile { - flex: none; - width: 25%; } - .column.is-one-fifth-mobile { - flex: none; - width: 20%; } - .column.is-two-fifths-mobile { - flex: none; - width: 40%; } - .column.is-three-fifths-mobile { - flex: none; - width: 60%; } - .column.is-four-fifths-mobile { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-mobile { - margin-left: 75%; } - .column.is-offset-two-thirds-mobile { - margin-left: 66.6666%; } - .column.is-offset-half-mobile { - margin-left: 50%; } - .column.is-offset-one-third-mobile { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-mobile { - margin-left: 25%; } - .column.is-offset-one-fifth-mobile { - margin-left: 20%; } - .column.is-offset-two-fifths-mobile { - margin-left: 40%; } - .column.is-offset-three-fifths-mobile { - margin-left: 60%; } - .column.is-offset-four-fifths-mobile { - margin-left: 80%; } - .column.is-0-mobile { - flex: none; - width: 0%; } - .column.is-offset-0-mobile { - margin-left: 0%; } - .column.is-1-mobile { - flex: none; - width: 8.33333%; } - .column.is-offset-1-mobile { - margin-left: 8.33333%; } - .column.is-2-mobile { - flex: none; - width: 16.66667%; } - .column.is-offset-2-mobile { - margin-left: 16.66667%; } - .column.is-3-mobile { - flex: none; - width: 25%; } - .column.is-offset-3-mobile { - margin-left: 25%; } - .column.is-4-mobile { - flex: none; - width: 33.33333%; } - .column.is-offset-4-mobile { - margin-left: 33.33333%; } - .column.is-5-mobile { - flex: none; - width: 41.66667%; } - .column.is-offset-5-mobile { - margin-left: 41.66667%; } - .column.is-6-mobile { - flex: none; - width: 50%; } - .column.is-offset-6-mobile { - margin-left: 50%; } - .column.is-7-mobile { - flex: none; - width: 58.33333%; } - .column.is-offset-7-mobile { - margin-left: 58.33333%; } - .column.is-8-mobile { - flex: none; - width: 66.66667%; } - .column.is-offset-8-mobile { - margin-left: 66.66667%; } - .column.is-9-mobile { - flex: none; - width: 75%; } - .column.is-offset-9-mobile { - margin-left: 75%; } - .column.is-10-mobile { - flex: none; - width: 83.33333%; } - .column.is-offset-10-mobile { - margin-left: 83.33333%; } - .column.is-11-mobile { - flex: none; - width: 91.66667%; } - .column.is-offset-11-mobile { - margin-left: 91.66667%; } - .column.is-12-mobile { - flex: none; - width: 100%; } - .column.is-offset-12-mobile { - margin-left: 100%; } } - @media screen and (min-width: 769px), print { - .column.is-narrow, .column.is-narrow-tablet { - flex: none; } - .column.is-full, .column.is-full-tablet { - flex: none; - width: 100%; } - .column.is-three-quarters, .column.is-three-quarters-tablet { - flex: none; - width: 75%; } - .column.is-two-thirds, .column.is-two-thirds-tablet { - flex: none; - width: 66.6666%; } - .column.is-half, .column.is-half-tablet { - flex: none; - width: 50%; } - .column.is-one-third, .column.is-one-third-tablet { - flex: none; - width: 33.3333%; } - .column.is-one-quarter, .column.is-one-quarter-tablet { - flex: none; - width: 25%; } - .column.is-one-fifth, .column.is-one-fifth-tablet { - flex: none; - width: 20%; } - .column.is-two-fifths, .column.is-two-fifths-tablet { - flex: none; - width: 40%; } - .column.is-three-fifths, .column.is-three-fifths-tablet { - flex: none; - width: 60%; } - .column.is-four-fifths, .column.is-four-fifths-tablet { - flex: none; - width: 80%; } - .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { - margin-left: 75%; } - .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { - margin-left: 66.6666%; } - .column.is-offset-half, .column.is-offset-half-tablet { - margin-left: 50%; } - .column.is-offset-one-third, .column.is-offset-one-third-tablet { - margin-left: 33.3333%; } - .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { - margin-left: 25%; } - .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { - margin-left: 20%; } - .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { - margin-left: 40%; } - .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { - margin-left: 60%; } - .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { - margin-left: 80%; } - .column.is-0, .column.is-0-tablet { - flex: none; - width: 0%; } - .column.is-offset-0, .column.is-offset-0-tablet { - margin-left: 0%; } - .column.is-1, .column.is-1-tablet { - flex: none; - width: 8.33333%; } - .column.is-offset-1, .column.is-offset-1-tablet { - margin-left: 8.33333%; } - .column.is-2, .column.is-2-tablet { - flex: none; - width: 16.66667%; } - .column.is-offset-2, .column.is-offset-2-tablet { - margin-left: 16.66667%; } - .column.is-3, .column.is-3-tablet { - flex: none; - width: 25%; } - .column.is-offset-3, .column.is-offset-3-tablet { - margin-left: 25%; } - .column.is-4, .column.is-4-tablet { - flex: none; - width: 33.33333%; } - .column.is-offset-4, .column.is-offset-4-tablet { - margin-left: 33.33333%; } - .column.is-5, .column.is-5-tablet { - flex: none; - width: 41.66667%; } - .column.is-offset-5, .column.is-offset-5-tablet { - margin-left: 41.66667%; } - .column.is-6, .column.is-6-tablet { - flex: none; - width: 50%; } - .column.is-offset-6, .column.is-offset-6-tablet { - margin-left: 50%; } - .column.is-7, .column.is-7-tablet { - flex: none; - width: 58.33333%; } - .column.is-offset-7, .column.is-offset-7-tablet { - margin-left: 58.33333%; } - .column.is-8, .column.is-8-tablet { - flex: none; - width: 66.66667%; } - .column.is-offset-8, .column.is-offset-8-tablet { - margin-left: 66.66667%; } - .column.is-9, .column.is-9-tablet { - flex: none; - width: 75%; } - .column.is-offset-9, .column.is-offset-9-tablet { - margin-left: 75%; } - .column.is-10, .column.is-10-tablet { - flex: none; - width: 83.33333%; } - .column.is-offset-10, .column.is-offset-10-tablet { - margin-left: 83.33333%; } - .column.is-11, .column.is-11-tablet { - flex: none; - width: 91.66667%; } - .column.is-offset-11, .column.is-offset-11-tablet { - margin-left: 91.66667%; } - .column.is-12, .column.is-12-tablet { - flex: none; - width: 100%; } - .column.is-offset-12, .column.is-offset-12-tablet { - margin-left: 100%; } } - @media screen and (max-width: 1055px) { - .column.is-narrow-touch { - flex: none; } - .column.is-full-touch { - flex: none; - width: 100%; } - .column.is-three-quarters-touch { - flex: none; - width: 75%; } - .column.is-two-thirds-touch { - flex: none; - width: 66.6666%; } - .column.is-half-touch { - flex: none; - width: 50%; } - .column.is-one-third-touch { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-touch { - flex: none; - width: 25%; } - .column.is-one-fifth-touch { - flex: none; - width: 20%; } - .column.is-two-fifths-touch { - flex: none; - width: 40%; } - .column.is-three-fifths-touch { - flex: none; - width: 60%; } - .column.is-four-fifths-touch { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-touch { - margin-left: 75%; } - .column.is-offset-two-thirds-touch { - margin-left: 66.6666%; } - .column.is-offset-half-touch { - margin-left: 50%; } - .column.is-offset-one-third-touch { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-touch { - margin-left: 25%; } - .column.is-offset-one-fifth-touch { - margin-left: 20%; } - .column.is-offset-two-fifths-touch { - margin-left: 40%; } - .column.is-offset-three-fifths-touch { - margin-left: 60%; } - .column.is-offset-four-fifths-touch { - margin-left: 80%; } - .column.is-0-touch { - flex: none; - width: 0%; } - .column.is-offset-0-touch { - margin-left: 0%; } - .column.is-1-touch { - flex: none; - width: 8.33333%; } - .column.is-offset-1-touch { - margin-left: 8.33333%; } - .column.is-2-touch { - flex: none; - width: 16.66667%; } - .column.is-offset-2-touch { - margin-left: 16.66667%; } - .column.is-3-touch { - flex: none; - width: 25%; } - .column.is-offset-3-touch { - margin-left: 25%; } - .column.is-4-touch { - flex: none; - width: 33.33333%; } - .column.is-offset-4-touch { - margin-left: 33.33333%; } - .column.is-5-touch { - flex: none; - width: 41.66667%; } - .column.is-offset-5-touch { - margin-left: 41.66667%; } - .column.is-6-touch { - flex: none; - width: 50%; } - .column.is-offset-6-touch { - margin-left: 50%; } - .column.is-7-touch { - flex: none; - width: 58.33333%; } - .column.is-offset-7-touch { - margin-left: 58.33333%; } - .column.is-8-touch { - flex: none; - width: 66.66667%; } - .column.is-offset-8-touch { - margin-left: 66.66667%; } - .column.is-9-touch { - flex: none; - width: 75%; } - .column.is-offset-9-touch { - margin-left: 75%; } - .column.is-10-touch { - flex: none; - width: 83.33333%; } - .column.is-offset-10-touch { - margin-left: 83.33333%; } - .column.is-11-touch { - flex: none; - width: 91.66667%; } - .column.is-offset-11-touch { - margin-left: 91.66667%; } - .column.is-12-touch { - flex: none; - width: 100%; } - .column.is-offset-12-touch { - margin-left: 100%; } } - @media screen and (min-width: 1056px) { - .column.is-narrow-desktop { - flex: none; } - .column.is-full-desktop { - flex: none; - width: 100%; } - .column.is-three-quarters-desktop { - flex: none; - width: 75%; } - .column.is-two-thirds-desktop { - flex: none; - width: 66.6666%; } - .column.is-half-desktop { - flex: none; - width: 50%; } - .column.is-one-third-desktop { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-desktop { - flex: none; - width: 25%; } - .column.is-one-fifth-desktop { - flex: none; - width: 20%; } - .column.is-two-fifths-desktop { - flex: none; - width: 40%; } - .column.is-three-fifths-desktop { - flex: none; - width: 60%; } - .column.is-four-fifths-desktop { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-desktop { - margin-left: 75%; } - .column.is-offset-two-thirds-desktop { - margin-left: 66.6666%; } - .column.is-offset-half-desktop { - margin-left: 50%; } - .column.is-offset-one-third-desktop { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-desktop { - margin-left: 25%; } - .column.is-offset-one-fifth-desktop { - margin-left: 20%; } - .column.is-offset-two-fifths-desktop { - margin-left: 40%; } - .column.is-offset-three-fifths-desktop { - margin-left: 60%; } - .column.is-offset-four-fifths-desktop { - margin-left: 80%; } - .column.is-0-desktop { - flex: none; - width: 0%; } - .column.is-offset-0-desktop { - margin-left: 0%; } - .column.is-1-desktop { - flex: none; - width: 8.33333%; } - .column.is-offset-1-desktop { - margin-left: 8.33333%; } - .column.is-2-desktop { - flex: none; - width: 16.66667%; } - .column.is-offset-2-desktop { - margin-left: 16.66667%; } - .column.is-3-desktop { - flex: none; - width: 25%; } - .column.is-offset-3-desktop { - margin-left: 25%; } - .column.is-4-desktop { - flex: none; - width: 33.33333%; } - .column.is-offset-4-desktop { - margin-left: 33.33333%; } - .column.is-5-desktop { - flex: none; - width: 41.66667%; } - .column.is-offset-5-desktop { - margin-left: 41.66667%; } - .column.is-6-desktop { - flex: none; - width: 50%; } - .column.is-offset-6-desktop { - margin-left: 50%; } - .column.is-7-desktop { - flex: none; - width: 58.33333%; } - .column.is-offset-7-desktop { - margin-left: 58.33333%; } - .column.is-8-desktop { - flex: none; - width: 66.66667%; } - .column.is-offset-8-desktop { - margin-left: 66.66667%; } - .column.is-9-desktop { - flex: none; - width: 75%; } - .column.is-offset-9-desktop { - margin-left: 75%; } - .column.is-10-desktop { - flex: none; - width: 83.33333%; } - .column.is-offset-10-desktop { - margin-left: 83.33333%; } - .column.is-11-desktop { - flex: none; - width: 91.66667%; } - .column.is-offset-11-desktop { - margin-left: 91.66667%; } - .column.is-12-desktop { - flex: none; - width: 100%; } - .column.is-offset-12-desktop { - margin-left: 100%; } } - @media screen and (min-width: 1216px) { - .column.is-narrow-widescreen { - flex: none; } - .column.is-full-widescreen { - flex: none; - width: 100%; } - .column.is-three-quarters-widescreen { - flex: none; - width: 75%; } - .column.is-two-thirds-widescreen { - flex: none; - width: 66.6666%; } - .column.is-half-widescreen { - flex: none; - width: 50%; } - .column.is-one-third-widescreen { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-widescreen { - flex: none; - width: 25%; } - .column.is-one-fifth-widescreen { - flex: none; - width: 20%; } - .column.is-two-fifths-widescreen { - flex: none; - width: 40%; } - .column.is-three-fifths-widescreen { - flex: none; - width: 60%; } - .column.is-four-fifths-widescreen { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-widescreen { - margin-left: 75%; } - .column.is-offset-two-thirds-widescreen { - margin-left: 66.6666%; } - .column.is-offset-half-widescreen { - margin-left: 50%; } - .column.is-offset-one-third-widescreen { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-widescreen { - margin-left: 25%; } - .column.is-offset-one-fifth-widescreen { - margin-left: 20%; } - .column.is-offset-two-fifths-widescreen { - margin-left: 40%; } - .column.is-offset-three-fifths-widescreen { - margin-left: 60%; } - .column.is-offset-four-fifths-widescreen { - margin-left: 80%; } - .column.is-0-widescreen { - flex: none; - width: 0%; } - .column.is-offset-0-widescreen { - margin-left: 0%; } - .column.is-1-widescreen { - flex: none; - width: 8.33333%; } - .column.is-offset-1-widescreen { - margin-left: 8.33333%; } - .column.is-2-widescreen { - flex: none; - width: 16.66667%; } - .column.is-offset-2-widescreen { - margin-left: 16.66667%; } - .column.is-3-widescreen { - flex: none; - width: 25%; } - .column.is-offset-3-widescreen { - margin-left: 25%; } - .column.is-4-widescreen { - flex: none; - width: 33.33333%; } - .column.is-offset-4-widescreen { - margin-left: 33.33333%; } - .column.is-5-widescreen { - flex: none; - width: 41.66667%; } - .column.is-offset-5-widescreen { - margin-left: 41.66667%; } - .column.is-6-widescreen { - flex: none; - width: 50%; } - .column.is-offset-6-widescreen { - margin-left: 50%; } - .column.is-7-widescreen { - flex: none; - width: 58.33333%; } - .column.is-offset-7-widescreen { - margin-left: 58.33333%; } - .column.is-8-widescreen { - flex: none; - width: 66.66667%; } - .column.is-offset-8-widescreen { - margin-left: 66.66667%; } - .column.is-9-widescreen { - flex: none; - width: 75%; } - .column.is-offset-9-widescreen { - margin-left: 75%; } - .column.is-10-widescreen { - flex: none; - width: 83.33333%; } - .column.is-offset-10-widescreen { - margin-left: 83.33333%; } - .column.is-11-widescreen { - flex: none; - width: 91.66667%; } - .column.is-offset-11-widescreen { - margin-left: 91.66667%; } - .column.is-12-widescreen { - flex: none; - width: 100%; } - .column.is-offset-12-widescreen { - margin-left: 100%; } } - @media screen and (min-width: 1408px) { - .column.is-narrow-fullhd { - flex: none; } - .column.is-full-fullhd { - flex: none; - width: 100%; } - .column.is-three-quarters-fullhd { - flex: none; - width: 75%; } - .column.is-two-thirds-fullhd { - flex: none; - width: 66.6666%; } - .column.is-half-fullhd { - flex: none; - width: 50%; } - .column.is-one-third-fullhd { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-fullhd { - flex: none; - width: 25%; } - .column.is-one-fifth-fullhd { - flex: none; - width: 20%; } - .column.is-two-fifths-fullhd { - flex: none; - width: 40%; } - .column.is-three-fifths-fullhd { - flex: none; - width: 60%; } - .column.is-four-fifths-fullhd { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-fullhd { - margin-left: 75%; } - .column.is-offset-two-thirds-fullhd { - margin-left: 66.6666%; } - .column.is-offset-half-fullhd { - margin-left: 50%; } - .column.is-offset-one-third-fullhd { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-fullhd { - margin-left: 25%; } - .column.is-offset-one-fifth-fullhd { - margin-left: 20%; } - .column.is-offset-two-fifths-fullhd { - margin-left: 40%; } - .column.is-offset-three-fifths-fullhd { - margin-left: 60%; } - .column.is-offset-four-fifths-fullhd { - margin-left: 80%; } - .column.is-0-fullhd { - flex: none; - width: 0%; } - .column.is-offset-0-fullhd { - margin-left: 0%; } - .column.is-1-fullhd { - flex: none; - width: 8.33333%; } - .column.is-offset-1-fullhd { - margin-left: 8.33333%; } - .column.is-2-fullhd { - flex: none; - width: 16.66667%; } - .column.is-offset-2-fullhd { - margin-left: 16.66667%; } - .column.is-3-fullhd { - flex: none; - width: 25%; } - .column.is-offset-3-fullhd { - margin-left: 25%; } - .column.is-4-fullhd { - flex: none; - width: 33.33333%; } - .column.is-offset-4-fullhd { - margin-left: 33.33333%; } - .column.is-5-fullhd { - flex: none; - width: 41.66667%; } - .column.is-offset-5-fullhd { - margin-left: 41.66667%; } - .column.is-6-fullhd { - flex: none; - width: 50%; } - .column.is-offset-6-fullhd { - margin-left: 50%; } - .column.is-7-fullhd { - flex: none; - width: 58.33333%; } - .column.is-offset-7-fullhd { - margin-left: 58.33333%; } - .column.is-8-fullhd { - flex: none; - width: 66.66667%; } - .column.is-offset-8-fullhd { - margin-left: 66.66667%; } - .column.is-9-fullhd { - flex: none; - width: 75%; } - .column.is-offset-9-fullhd { - margin-left: 75%; } - .column.is-10-fullhd { - flex: none; - width: 83.33333%; } - .column.is-offset-10-fullhd { - margin-left: 83.33333%; } - .column.is-11-fullhd { - flex: none; - width: 91.66667%; } - .column.is-offset-11-fullhd { - margin-left: 91.66667%; } - .column.is-12-fullhd { - flex: none; - width: 100%; } - .column.is-offset-12-fullhd { - margin-left: 100%; } } - -.columns { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - .columns:last-child { - margin-bottom: -0.75rem; } - .columns:not(:last-child) { - margin-bottom: calc(1.5rem - 0.75rem); } - .columns.is-centered { - justify-content: center; } - .columns.is-gapless { - margin-left: 0; - margin-right: 0; - margin-top: 0; } - .columns.is-gapless > .column { - margin: 0; - padding: 0 !important; } - .columns.is-gapless:not(:last-child) { - margin-bottom: 1.5rem; } - .columns.is-gapless:last-child { - margin-bottom: 0; } - .columns.is-mobile { - display: flex; } - .columns.is-multiline { - flex-wrap: wrap; } - .columns.is-vcentered { - align-items: center; } - @media screen and (min-width: 769px), print { - .columns:not(.is-desktop) { - display: flex; } } - @media screen and (min-width: 1056px) { - .columns.is-desktop { - display: flex; } } - -.columns.is-variable { - --columnGap: 0.75rem; - margin-left: calc(-1 * var(--columnGap)); - margin-right: calc(-1 * var(--columnGap)); } - .columns.is-variable .column { - padding-left: var(--columnGap); - padding-right: var(--columnGap); } - .columns.is-variable.is-0 { - --columnGap: 0rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-0-mobile { - --columnGap: 0rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-0-tablet { - --columnGap: 0rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-0-tablet-only { - --columnGap: 0rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-0-touch { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-0-desktop { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-0-desktop-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-0-widescreen { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-0-widescreen-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-0-fullhd { - --columnGap: 0rem; } } - .columns.is-variable.is-1 { - --columnGap: 0.25rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-1-mobile { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-1-tablet { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-1-tablet-only { - --columnGap: 0.25rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-1-touch { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-1-desktop { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-1-desktop-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-1-widescreen { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-1-widescreen-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-1-fullhd { - --columnGap: 0.25rem; } } - .columns.is-variable.is-2 { - --columnGap: 0.5rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-2-mobile { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-2-tablet { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-2-tablet-only { - --columnGap: 0.5rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-2-touch { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-2-desktop { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-2-desktop-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-2-widescreen { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-2-widescreen-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-2-fullhd { - --columnGap: 0.5rem; } } - .columns.is-variable.is-3 { - --columnGap: 0.75rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-3-mobile { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-3-tablet { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-3-tablet-only { - --columnGap: 0.75rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-3-touch { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-3-desktop { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-3-desktop-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-3-widescreen { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-3-widescreen-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-3-fullhd { - --columnGap: 0.75rem; } } - .columns.is-variable.is-4 { - --columnGap: 1rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-4-mobile { - --columnGap: 1rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-4-tablet { - --columnGap: 1rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-4-tablet-only { - --columnGap: 1rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-4-touch { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-4-desktop { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-4-desktop-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-4-widescreen { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-4-widescreen-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-4-fullhd { - --columnGap: 1rem; } } - .columns.is-variable.is-5 { - --columnGap: 1.25rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-5-mobile { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-5-tablet { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-5-tablet-only { - --columnGap: 1.25rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-5-touch { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-5-desktop { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-5-desktop-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-5-widescreen { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-5-widescreen-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-5-fullhd { - --columnGap: 1.25rem; } } - .columns.is-variable.is-6 { - --columnGap: 1.5rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-6-mobile { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-6-tablet { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-6-tablet-only { - --columnGap: 1.5rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-6-touch { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-6-desktop { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-6-desktop-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-6-widescreen { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-6-widescreen-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-6-fullhd { - --columnGap: 1.5rem; } } - .columns.is-variable.is-7 { - --columnGap: 1.75rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-7-mobile { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-7-tablet { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-7-tablet-only { - --columnGap: 1.75rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-7-touch { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-7-desktop { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-7-desktop-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-7-widescreen { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-7-widescreen-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-7-fullhd { - --columnGap: 1.75rem; } } - .columns.is-variable.is-8 { - --columnGap: 2rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-8-mobile { - --columnGap: 2rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-8-tablet { - --columnGap: 2rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-8-tablet-only { - --columnGap: 2rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-8-touch { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-8-desktop { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-8-desktop-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-8-widescreen { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-8-widescreen-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-8-fullhd { - --columnGap: 2rem; } } - -.tile { - align-items: stretch; - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - min-height: min-content; } - .tile.is-ancestor { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - .tile.is-ancestor:last-child { - margin-bottom: -0.75rem; } - .tile.is-ancestor:not(:last-child) { - margin-bottom: 0.75rem; } - .tile.is-child { - margin: 0 !important; } - .tile.is-parent { - padding: 0.75rem; } - .tile.is-vertical { - flex-direction: column; } - .tile.is-vertical > .tile.is-child:not(:last-child) { - margin-bottom: 1.5rem !important; } - @media screen and (min-width: 769px), print { - .tile:not(.is-child) { - display: flex; } - .tile.is-1 { - flex: none; - width: 8.33333%; } - .tile.is-2 { - flex: none; - width: 16.66667%; } - .tile.is-3 { - flex: none; - width: 25%; } - .tile.is-4 { - flex: none; - width: 33.33333%; } - .tile.is-5 { - flex: none; - width: 41.66667%; } - .tile.is-6 { - flex: none; - width: 50%; } - .tile.is-7 { - flex: none; - width: 58.33333%; } - .tile.is-8 { - flex: none; - width: 66.66667%; } - .tile.is-9 { - flex: none; - width: 75%; } - .tile.is-10 { - flex: none; - width: 83.33333%; } - .tile.is-11 { - flex: none; - width: 91.66667%; } - .tile.is-12 { - flex: none; - width: 100%; } } - -.hero { - align-items: stretch; - display: flex; - flex-direction: column; - justify-content: space-between; } - .hero .navbar { - background: none; } - .hero .tabs ul { - border-bottom: none; } - .hero.is-white { - background-color: white; - color: #0a0a0a; } - .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-white strong { - color: inherit; } - .hero.is-white .title { - color: #0a0a0a; } - .hero.is-white .subtitle { - color: rgba(10, 10, 10, 0.9); } - .hero.is-white .subtitle a:not(.button), - .hero.is-white .subtitle strong { - color: #0a0a0a; } - @media screen and (max-width: 1055px) { - .hero.is-white .navbar-menu { - background-color: white; } } - .hero.is-white .navbar-item, - .hero.is-white .navbar-link { - color: rgba(10, 10, 10, 0.7); } - .hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, - .hero.is-white .navbar-link:hover, - .hero.is-white .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - .hero.is-white .tabs a { - color: #0a0a0a; - opacity: 0.9; } - .hero.is-white .tabs a:hover { - opacity: 1; } - .hero.is-white .tabs li.is-active a { - opacity: 1; } - .hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { - color: #0a0a0a; } - .hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - .hero.is-white.is-bold { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } - @media screen and (max-width: 768px) { - .hero.is-white.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } } - .hero.is-black { - background-color: #0a0a0a; - color: white; } - .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-black strong { - color: inherit; } - .hero.is-black .title { - color: white; } - .hero.is-black .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-black .subtitle a:not(.button), - .hero.is-black .subtitle strong { - color: white; } - @media screen and (max-width: 1055px) { - .hero.is-black .navbar-menu { - background-color: #0a0a0a; } } - .hero.is-black .navbar-item, - .hero.is-black .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, - .hero.is-black .navbar-link:hover, - .hero.is-black .navbar-link.is-active { - background-color: black; - color: white; } - .hero.is-black .tabs a { - color: white; - opacity: 0.9; } - .hero.is-black .tabs a:hover { - opacity: 1; } - .hero.is-black .tabs li.is-active a { - opacity: 1; } - .hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { - color: white; } - .hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { - background-color: white; - border-color: white; - color: #0a0a0a; } - .hero.is-black.is-bold { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } - @media screen and (max-width: 768px) { - .hero.is-black.is-bold .navbar-menu { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } - .hero.is-light { - background-color: whitesmoke; - color: #363636; } - .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-light strong { - color: inherit; } - .hero.is-light .title { - color: #363636; } - .hero.is-light .subtitle { - color: rgba(54, 54, 54, 0.9); } - .hero.is-light .subtitle a:not(.button), - .hero.is-light .subtitle strong { - color: #363636; } - @media screen and (max-width: 1055px) { - .hero.is-light .navbar-menu { - background-color: whitesmoke; } } - .hero.is-light .navbar-item, - .hero.is-light .navbar-link { - color: rgba(54, 54, 54, 0.7); } - .hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, - .hero.is-light .navbar-link:hover, - .hero.is-light .navbar-link.is-active { - background-color: #e8e8e8; - color: #363636; } - .hero.is-light .tabs a { - color: #363636; - opacity: 0.9; } - .hero.is-light .tabs a:hover { - opacity: 1; } - .hero.is-light .tabs li.is-active a { - opacity: 1; } - .hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { - color: #363636; } - .hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { - background-color: #363636; - border-color: #363636; - color: whitesmoke; } - .hero.is-light.is-bold { - background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } - @media screen and (max-width: 768px) { - .hero.is-light.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } } - .hero.is-dark, .content kbd.hero { - background-color: #363636; - color: whitesmoke; } - .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-dark strong, - .content kbd.hero strong { - color: inherit; } - .hero.is-dark .title, .content kbd.hero .title { - color: whitesmoke; } - .hero.is-dark .subtitle, .content kbd.hero .subtitle { - color: rgba(245, 245, 245, 0.9); } - .hero.is-dark .subtitle a:not(.button), .content kbd.hero .subtitle a:not(.button), - .hero.is-dark .subtitle strong, - .content kbd.hero .subtitle strong { - color: whitesmoke; } - @media screen and (max-width: 1055px) { - .hero.is-dark .navbar-menu, .content kbd.hero .navbar-menu { - background-color: #363636; } } - .hero.is-dark .navbar-item, .content kbd.hero .navbar-item, - .hero.is-dark .navbar-link, - .content kbd.hero .navbar-link { - color: rgba(245, 245, 245, 0.7); } - .hero.is-dark a.navbar-item:hover, .content kbd.hero a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, .content kbd.hero a.navbar-item.is-active, - .hero.is-dark .navbar-link:hover, - .content kbd.hero .navbar-link:hover, - .hero.is-dark .navbar-link.is-active, - .content kbd.hero .navbar-link.is-active { - background-color: #292929; - color: whitesmoke; } - .hero.is-dark .tabs a, .content kbd.hero .tabs a { - color: whitesmoke; - opacity: 0.9; } - .hero.is-dark .tabs a:hover, .content kbd.hero .tabs a:hover { - opacity: 1; } - .hero.is-dark .tabs li.is-active a, .content kbd.hero .tabs li.is-active a { - opacity: 1; } - .hero.is-dark .tabs.is-boxed a, .content kbd.hero .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a, .content kbd.hero .tabs.is-toggle a { - color: whitesmoke; } - .hero.is-dark .tabs.is-boxed a:hover, .content kbd.hero .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover, .content kbd.hero .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-dark .tabs.is-boxed li.is-active a, .content kbd.hero .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .content kbd.hero .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .content kbd.hero .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover, .content kbd.hero .tabs.is-toggle li.is-active a:hover { - background-color: whitesmoke; - border-color: whitesmoke; - color: #363636; } - .hero.is-dark.is-bold, .content kbd.hero.is-bold { - background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } - @media screen and (max-width: 768px) { - .hero.is-dark.is-bold .navbar-menu, .content kbd.hero.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } } - .hero.is-primary, .docstring > section > a.hero.docs-sourcelink { - background-color: #4eb5de; - color: #fff; } - .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-primary strong, - .docstring > section > a.hero.docs-sourcelink strong { - color: inherit; } - .hero.is-primary .title, .docstring > section > a.hero.docs-sourcelink .title { - color: #fff; } - .hero.is-primary .subtitle, .docstring > section > a.hero.docs-sourcelink .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-primary .subtitle a:not(.button), .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), - .hero.is-primary .subtitle strong, - .docstring > section > a.hero.docs-sourcelink .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-primary .navbar-menu, .docstring > section > a.hero.docs-sourcelink .navbar-menu { - background-color: #4eb5de; } } - .hero.is-primary .navbar-item, .docstring > section > a.hero.docs-sourcelink .navbar-item, - .hero.is-primary .navbar-link, - .docstring > section > a.hero.docs-sourcelink .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-primary a.navbar-item:hover, .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, - .hero.is-primary .navbar-link:hover, - .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, - .hero.is-primary .navbar-link.is-active, - .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { - background-color: #39acda; - color: #fff; } - .hero.is-primary .tabs a, .docstring > section > a.hero.docs-sourcelink .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-primary .tabs a:hover, .docstring > section > a.hero.docs-sourcelink .tabs a:hover { - opacity: 1; } - .hero.is-primary .tabs li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { - opacity: 1; } - .hero.is-primary .tabs.is-boxed a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { - color: #fff; } - .hero.is-primary .tabs.is-boxed a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-primary .tabs.is-boxed li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #4eb5de; } - .hero.is-primary.is-bold, .docstring > section > a.hero.is-bold.docs-sourcelink { - background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } - @media screen and (max-width: 768px) { - .hero.is-primary.is-bold .navbar-menu, .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { - background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } } - .hero.is-link { - background-color: #2e63b8; - color: #fff; } - .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-link strong { - color: inherit; } - .hero.is-link .title { - color: #fff; } - .hero.is-link .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-link .subtitle a:not(.button), - .hero.is-link .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-link .navbar-menu { - background-color: #2e63b8; } } - .hero.is-link .navbar-item, - .hero.is-link .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, - .hero.is-link .navbar-link:hover, - .hero.is-link .navbar-link.is-active { - background-color: #2958a4; - color: #fff; } - .hero.is-link .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-link .tabs a:hover { - opacity: 1; } - .hero.is-link .tabs li.is-active a { - opacity: 1; } - .hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { - color: #fff; } - .hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #2e63b8; } - .hero.is-link.is-bold { - background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } - @media screen and (max-width: 768px) { - .hero.is-link.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } } - .hero.is-info { - background-color: #209cee; - color: #fff; } - .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-info strong { - color: inherit; } - .hero.is-info .title { - color: #fff; } - .hero.is-info .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-info .subtitle a:not(.button), - .hero.is-info .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-info .navbar-menu { - background-color: #209cee; } } - .hero.is-info .navbar-item, - .hero.is-info .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, - .hero.is-info .navbar-link:hover, - .hero.is-info .navbar-link.is-active { - background-color: #118fe4; - color: #fff; } - .hero.is-info .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-info .tabs a:hover { - opacity: 1; } - .hero.is-info .tabs li.is-active a { - opacity: 1; } - .hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { - color: #fff; } - .hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #209cee; } - .hero.is-info.is-bold { - background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); } - @media screen and (max-width: 768px) { - .hero.is-info.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); } } - .hero.is-success { - background-color: #22c35b; - color: #fff; } - .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-success strong { - color: inherit; } - .hero.is-success .title { - color: #fff; } - .hero.is-success .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-success .subtitle a:not(.button), - .hero.is-success .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-success .navbar-menu { - background-color: #22c35b; } } - .hero.is-success .navbar-item, - .hero.is-success .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, - .hero.is-success .navbar-link:hover, - .hero.is-success .navbar-link.is-active { - background-color: #1ead51; - color: #fff; } - .hero.is-success .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-success .tabs a:hover { - opacity: 1; } - .hero.is-success .tabs li.is-active a { - opacity: 1; } - .hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { - color: #fff; } - .hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #22c35b; } - .hero.is-success.is-bold { - background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } - @media screen and (max-width: 768px) { - .hero.is-success.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } } - .hero.is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-warning strong { - color: inherit; } - .hero.is-warning .title { - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning .subtitle { - color: rgba(0, 0, 0, 0.9); } - .hero.is-warning .subtitle a:not(.button), - .hero.is-warning .subtitle strong { - color: rgba(0, 0, 0, 0.7); } - @media screen and (max-width: 1055px) { - .hero.is-warning .navbar-menu { - background-color: #ffdd57; } } - .hero.is-warning .navbar-item, - .hero.is-warning .navbar-link { - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, - .hero.is-warning .navbar-link:hover, - .hero.is-warning .navbar-link.is-active { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning .tabs a { - color: rgba(0, 0, 0, 0.7); - opacity: 0.9; } - .hero.is-warning .tabs a:hover { - opacity: 1; } - .hero.is-warning .tabs li.is-active a { - opacity: 1; } - .hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { - background-color: rgba(0, 0, 0, 0.7); - border-color: rgba(0, 0, 0, 0.7); - color: #ffdd57; } - .hero.is-warning.is-bold { - background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } - @media screen and (max-width: 768px) { - .hero.is-warning.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } } - .hero.is-danger { - background-color: #da0b00; - color: #fff; } - .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-danger strong { - color: inherit; } - .hero.is-danger .title { - color: #fff; } - .hero.is-danger .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-danger .subtitle a:not(.button), - .hero.is-danger .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-danger .navbar-menu { - background-color: #da0b00; } } - .hero.is-danger .navbar-item, - .hero.is-danger .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, - .hero.is-danger .navbar-link:hover, - .hero.is-danger .navbar-link.is-active { - background-color: #c10a00; - color: #fff; } - .hero.is-danger .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-danger .tabs a:hover { - opacity: 1; } - .hero.is-danger .tabs li.is-active a { - opacity: 1; } - .hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { - color: #fff; } - .hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #da0b00; } - .hero.is-danger.is-bold { - background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } - @media screen and (max-width: 768px) { - .hero.is-danger.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } } - .hero.is-small .hero-body, #documenter .docs-sidebar form.docs-search > input.hero .hero-body { - padding-bottom: 1.5rem; - padding-top: 1.5rem; } - @media screen and (min-width: 769px), print { - .hero.is-medium .hero-body { - padding-bottom: 9rem; - padding-top: 9rem; } } - @media screen and (min-width: 769px), print { - .hero.is-large .hero-body { - padding-bottom: 18rem; - padding-top: 18rem; } } - .hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { - align-items: center; - display: flex; } - .hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { - flex-grow: 1; - flex-shrink: 1; } - .hero.is-halfheight { - min-height: 50vh; } - .hero.is-fullheight { - min-height: 100vh; } - -.hero-video { - overflow: hidden; } - .hero-video video { - left: 50%; - min-height: 100%; - min-width: 100%; - position: absolute; - top: 50%; - transform: translate3d(-50%, -50%, 0); } - .hero-video.is-transparent { - opacity: 0.3; } - @media screen and (max-width: 768px) { - .hero-video { - display: none; } } - -.hero-buttons { - margin-top: 1.5rem; } - @media screen and (max-width: 768px) { - .hero-buttons .button { - display: flex; } - .hero-buttons .button:not(:last-child) { - margin-bottom: 0.75rem; } } - @media screen and (min-width: 769px), print { - .hero-buttons { - display: flex; - justify-content: center; } - .hero-buttons .button:not(:last-child) { - margin-right: 1.5rem; } } - -.hero-head, -.hero-foot { - flex-grow: 0; - flex-shrink: 0; } - -.hero-body { - flex-grow: 1; - flex-shrink: 0; - padding: 3rem 1.5rem; } - -.section { - padding: 3rem 1.5rem; } - @media screen and (min-width: 1056px) { - .section.is-medium { - padding: 9rem 1.5rem; } - .section.is-large { - padding: 18rem 1.5rem; } } - -.footer { - background-color: #fafafa; - padding: 3rem 1.5rem 6rem; } - -h1 .docs-heading-anchor, h1 .docs-heading-anchor:hover, h1 .docs-heading-anchor:visited, h2 .docs-heading-anchor, h2 .docs-heading-anchor:hover, h2 .docs-heading-anchor:visited, h3 .docs-heading-anchor, h3 .docs-heading-anchor:hover, h3 .docs-heading-anchor:visited, h4 .docs-heading-anchor, h4 .docs-heading-anchor:hover, h4 .docs-heading-anchor:visited, h5 .docs-heading-anchor, h5 .docs-heading-anchor:hover, h5 .docs-heading-anchor:visited, h6 .docs-heading-anchor, h6 .docs-heading-anchor:hover, h6 .docs-heading-anchor:visited { - color: #222222; } - -h1 .docs-heading-anchor-permalink, h2 .docs-heading-anchor-permalink, h3 .docs-heading-anchor-permalink, h4 .docs-heading-anchor-permalink, h5 .docs-heading-anchor-permalink, h6 .docs-heading-anchor-permalink { - visibility: hidden; - vertical-align: middle; - margin-left: 0.5em; - font-size: 0.7rem; } - h1 .docs-heading-anchor-permalink::before, h2 .docs-heading-anchor-permalink::before, h3 .docs-heading-anchor-permalink::before, h4 .docs-heading-anchor-permalink::before, h5 .docs-heading-anchor-permalink::before, h6 .docs-heading-anchor-permalink::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f0c1"; } - -h1:hover .docs-heading-anchor-permalink, h2:hover .docs-heading-anchor-permalink, h3:hover .docs-heading-anchor-permalink, h4:hover .docs-heading-anchor-permalink, h5:hover .docs-heading-anchor-permalink, h6:hover .docs-heading-anchor-permalink { - visibility: visible; } - -.docs-dark-only { - display: none !important; } - -.admonition { - background-color: #b5b5b5; - border-style: solid; - border-width: 1px; - border-color: #363636; - border-radius: 4px; - font-size: 1rem; } - .admonition strong { - color: currentColor; } - .admonition.is-small, #documenter .docs-sidebar form.docs-search > input.admonition { - font-size: 0.75rem; } - .admonition.is-medium { - font-size: 1.25rem; } - .admonition.is-large { - font-size: 1.5rem; } - .admonition.is-default { - background-color: #b5b5b5; - border-color: #363636; } - .admonition.is-default > .admonition-header { - background-color: #363636; - color: #fff; } - .admonition.is-default > .admonition-body { - color: #fff; } - .admonition.is-info { - background-color: #b8dffa; - border-color: #209cee; } - .admonition.is-info > .admonition-header { - background-color: #209cee; - color: #fff; } - .admonition.is-info > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - .admonition.is-success { - background-color: #9beeb8; - border-color: #22c35b; } - .admonition.is-success > .admonition-header { - background-color: #22c35b; - color: #fff; } - .admonition.is-success > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - .admonition.is-warning { - background-color: #fff3c5; - border-color: #ffdd57; } - .admonition.is-warning > .admonition-header { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .admonition.is-warning > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - .admonition.is-danger { - background-color: #ff857e; - border-color: #da0b00; } - .admonition.is-danger > .admonition-header { - background-color: #da0b00; - color: #fff; } - .admonition.is-danger > .admonition-body { - color: #fff; } - .admonition.is-compat { - background-color: #99e6f0; - border-color: #1db5c9; } - .admonition.is-compat > .admonition-header { - background-color: #1db5c9; - color: #fff; } - .admonition.is-compat > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - -.admonition-header { - color: #fff; - background-color: #363636; - align-items: center; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - .admonition-header:before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - margin-right: 0.75em; - content: "\f06a"; } - -.admonition-body { - color: #222222; - padding: 1em 1.25em; } - .admonition-body pre { - background-color: whitesmoke; } - .admonition-body code { - background-color: rgba(0, 0, 0, 0.05); } - -.docstring { - margin-bottom: 1em; - background-color: transparent; - border: 1px solid #dbdbdb; - box-shadow: 2px 2px 3px rgba(10, 10, 10, 0.1); - max-width: 100%; } - .docstring > header { - display: flex; - flex-grow: 1; - align-items: stretch; - padding: 0.75rem; - background-color: whitesmoke; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - box-shadow: none; - border-bottom: 1px solid #dbdbdb; } - .docstring > header code { - background-color: transparent; } - .docstring > header .docstring-binding { - margin-right: 0.3em; } - .docstring > header .docstring-category { - margin-left: 0.3em; } - .docstring > section { - position: relative; - padding: 1rem 1.25rem; - border-bottom: 1px solid #dbdbdb; } - .docstring > section:last-child { - border-bottom: none; } - .docstring > section > a.docs-sourcelink { - transition: opacity 0.3s; - opacity: 0; - position: absolute; - right: 0.625rem; - bottom: 0.5rem; } - .docstring:hover > section > a.docs-sourcelink { - opacity: 0.2; } - .docstring > section:hover a.docs-sourcelink { - opacity: 1; } - -.content pre { - border: 1px solid #dbdbdb; } - -.content code { - font-weight: inherit; } - -.content a code { - color: #2e63b8; } - -.content h1 code, .content h2 code, .content h3 code, .content h4 code, .content h5 code, .content h6 code { - color: #222222; } - -.content table { - display: block; - width: initial; - max-width: 100%; - overflow-x: auto; } - -.content blockquote > ul:first-child, .content blockquote > ol:first-child, .content .admonition-body > ul:first-child, .content .admonition-body > ol:first-child { - margin-top: 0; } - -.breadcrumb a.is-disabled { - cursor: default; - pointer-events: none; } - .breadcrumb a.is-disabled, .breadcrumb a.is-disabled:hover { - color: #222222; } - -.hljs { - background: initial !important; - padding: initial !important; } - -.katex .katex-mathml { - top: 0; - right: 0; } - -html { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; } - -/* This file contain the overall layout. - * - * The main container is
    that is identified by id #documenter. - */ -#documenter .docs-main > article { - overflow-wrap: break-word; } - -@media screen and (min-width: 1056px) { - #documenter .docs-main { - max-width: 52rem; - margin-left: 20rem; - padding-right: 1rem; } } - -@media screen and (max-width: 1055px) { - #documenter .docs-main { - width: 100%; } - #documenter .docs-main > article { - max-width: 52rem; - margin-left: auto; - margin-right: auto; - margin-bottom: 1rem; - padding: 0 1rem; } - #documenter .docs-main > header, #documenter .docs-main > nav { - max-width: 100%; - width: 100%; - margin: 0; } } - -#documenter .docs-main header.docs-navbar { - background-color: white; - border-bottom: 1px solid #dbdbdb; - z-index: 2; - min-height: 4rem; - margin-bottom: 1rem; - display: flex; } - #documenter .docs-main header.docs-navbar .breadcrumb { - flex-grow: 1; } - #documenter .docs-main header.docs-navbar .docs-right { - display: flex; - white-space: nowrap; } - #documenter .docs-main header.docs-navbar .docs-right .docs-icon, #documenter .docs-main header.docs-navbar .docs-right .docs-label, #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - display: inline-block; } - #documenter .docs-main header.docs-navbar .docs-right .docs-label { - padding: 0; - margin-left: 0.3em; } - #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { - margin: auto 0 auto 1rem; } - #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - font-size: 1.5rem; - margin: auto 0 auto 1rem; } - #documenter .docs-main header.docs-navbar > * { - margin: auto 0; } - @media screen and (max-width: 1055px) { - #documenter .docs-main header.docs-navbar { - position: sticky; - top: 0; - padding: 0 1rem; - /* For Headroom.js */ - transition-property: top, box-shadow; - -webkit-transition-property: top, box-shadow; - /* Safari */ - transition-duration: 0.3s; - -webkit-transition-duration: 0.3s; - /* Safari */ } - #documenter .docs-main header.docs-navbar.headroom--not-top { - box-shadow: 0.2rem 0rem 0.4rem #bbb; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } - #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { - top: -4.5rem; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } } - -#documenter .docs-main section.footnotes { - border-top: 1px solid #dbdbdb; } - #documenter .docs-main section.footnotes li .tag:first-child, #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, #documenter .docs-main section.footnotes li .content kbd:first-child, .content #documenter .docs-main section.footnotes li kbd:first-child { - margin-right: 1em; - margin-bottom: 0.4em; } - -#documenter .docs-main .docs-footer { - display: flex; - margin-left: 0; - margin-right: 0; - border-top: 1px solid #dbdbdb; - padding-top: 1rem; - padding-bottom: 1rem; } - @media screen and (max-width: 1055px) { - #documenter .docs-main .docs-footer { - padding-left: 1rem; - padding-right: 1rem; } } - #documenter .docs-main .docs-footer .docs-footer-nextpage, #documenter .docs-main .docs-footer .docs-footer-prevpage { - flex-grow: 1; } - #documenter .docs-main .docs-footer .docs-footer-nextpage { - text-align: right; } - -#documenter .docs-sidebar { - display: flex; - flex-direction: column; - color: #0a0a0a; - background-color: whitesmoke; - border-right: 1px solid #dbdbdb; - padding: 0; - flex: 0 0 18rem; - z-index: 5; - position: fixed; - left: -18rem; - width: 18rem; - height: 100%; - transition: left 0.3s; - /* Setting up a nicer theme style for the scrollbar */ } - #documenter .docs-sidebar.visible { - left: 0; - box-shadow: 0.4rem 0rem 0.8rem #bbb; } - @media screen and (min-width: 1056px) { - #documenter .docs-sidebar.visible { - box-shadow: none; } } - @media screen and (min-width: 1056px) { - #documenter .docs-sidebar { - left: 0; - top: 0; } } - #documenter .docs-sidebar .docs-logo { - margin-top: 1rem; - padding: 0 1rem; } - #documenter .docs-sidebar .docs-logo > img { - max-height: 6rem; - margin: auto; } - #documenter .docs-sidebar .docs-package-name { - flex-shrink: 0; - font-size: 1.5rem; - font-weight: 700; - text-align: center; - white-space: nowrap; - overflow: hidden; - padding: 0.5rem 0; } - #documenter .docs-sidebar .docs-package-name .docs-autofit { - max-width: 16.2rem; } - #documenter .docs-sidebar .docs-version-selector { - border-top: 1px solid #dbdbdb; - display: none; - padding: 0.5rem; } - #documenter .docs-sidebar .docs-version-selector.visible { - display: flex; } - #documenter .docs-sidebar ul.docs-menu { - flex-grow: 1; - user-select: none; - font-size: 1rem; - border-top: 1px solid #dbdbdb; - padding-bottom: 1.5rem; - /* Managing collapsible submenus */ } - #documenter .docs-sidebar ul.docs-menu > li > .tocitem { - font-weight: bold; } - #documenter .docs-sidebar ul.docs-menu > li li { - font-size: 0.95rem; - margin-left: 1em; - border-left: 1px solid #dbdbdb; } - #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { - display: none; } - #documenter .docs-sidebar ul.docs-menu ul.collapsed { - display: none; } - #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { - display: block; } - #documenter .docs-sidebar ul.docs-menu label.tocitem { - display: flex; } - #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { - flex-grow: 2; } - #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - font-size: 0.75rem; - margin-left: 1rem; - margin-top: auto; - margin-bottom: auto; } - #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f054"; } - #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { - content: "\f078"; } - #documenter .docs-sidebar ul.docs-menu .tocitem { - display: block; - padding: 0.5rem 0.5rem; } - #documenter .docs-sidebar ul.docs-menu .tocitem, #documenter .docs-sidebar ul.docs-menu .tocitem:hover { - color: #0a0a0a; } - #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { - background-color: #ebebeb; } - #documenter .docs-sidebar ul.docs-menu li.is-active { - border-top: 1px solid #c7c7c7; - border-bottom: 1px solid #dbdbdb; - background-color: white; } - #documenter .docs-sidebar ul.docs-menu li.is-active > .tocitem, #documenter .docs-sidebar ul.docs-menu li.is-active > .tocitem:hover { - background-color: white; - color: #0a0a0a; } - #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { - border-top: none; } - #documenter .docs-sidebar ul.docs-menu ul.internal { - margin: 0 0.5rem 0.5rem; - border-top: 1px solid #dbdbdb; } - #documenter .docs-sidebar ul.docs-menu ul.internal li { - font-size: 0.85rem; - border-left: none; - margin-left: 0; - margin-top: 0.5rem; } - #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { - width: 100%; - padding: 0; } - #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { - content: "⚬"; - margin-right: 0.4em; } - #documenter .docs-sidebar form.docs-search { - margin: auto; - margin-top: 0.5rem; - margin-bottom: 0.5rem; } - #documenter .docs-sidebar form.docs-search > input { - width: 14.4rem; } - @media screen and (min-width: 1056px) { - #documenter .docs-sidebar ul.docs-menu { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { - width: .3rem; - background: none; } - #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #e0e0e0; } - #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { - background: #cccccc; } } - @media screen and (max-width: 1055px) { - #documenter .docs-sidebar { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - #documenter .docs-sidebar::-webkit-scrollbar { - width: .3rem; - background: none; } - #documenter .docs-sidebar::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #e0e0e0; } - #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { - background: #cccccc; } } - -#documenter .docs-main #documenter-search-info { - margin-bottom: 1rem; } - -#documenter .docs-main #documenter-search-results { - list-style-type: circle; - list-style-position: outside; } - #documenter .docs-main #documenter-search-results li { - margin-left: 2rem; } - #documenter .docs-main #documenter-search-results .docs-highlight { - background-color: yellow; } - -/* - -Original highlight.js style (c) Ivan Sagalaev - -*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #F0F0F0; } - -/* Base color: saturation 0; */ -.hljs, -.hljs-subst { - color: #444; } - -.hljs-comment { - color: #888888; } - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - font-weight: bold; } - -/* User color: hue: 0 */ -.hljs-type, -.hljs-string, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #880000; } - -.hljs-title, -.hljs-section { - color: #880000; - font-weight: bold; } - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #BC6060; } - -/* Language color: hue: 90; */ -.hljs-literal { - color: #78A960; } - -.hljs-built_in, -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #397300; } - -/* Meta color: hue: 200 */ -.hljs-meta { - color: #1f7199; } - -.hljs-meta-string { - color: #4d99bf; } - -/* Misc effects */ -.hljs-emphasis { - font-style: italic; } - -.hljs-strong { - font-weight: bold; } diff --git a/docs/build/assets/themeswap.js b/docs/build/assets/themeswap.js deleted file mode 100644 index d4666841..00000000 --- a/docs/build/assets/themeswap.js +++ /dev/null @@ -1,42 +0,0 @@ -// Small function to quickly swap out themes. Gets put into the tag.. -function set_theme_from_local_storage() { - // Browser does not support Web Storage, bail early. - if(typeof(window.localStorage) === "undefined") return; - // Get the user-picked theme from localStorage. May be `null`, which means the default - // theme. - var theme = window.localStorage.getItem("documenter-theme"); - // Initialize a few variables for the loop: - // - // - active: will contain the index of the theme that should be active. Note that there - // is no guarantee that localStorage contains sane values. If `active` stays `null` - // we either could not find the theme or it is the default (primary) theme anyway. - // Either way, we then need to stick to the primary theme. - // - // - disabled: style sheets that should be disabled (i.e. all the theme style sheets - // that are not the currently active theme) - var active = null; var disabled = []; - for (var i = 0; i < document.styleSheets.length; i++) { - var ss = document.styleSheets[i]; - // The tag of each style sheet is expected to have a data-theme-name attribute - // which must contain the name of the theme. The names in localStorage much match this. - var themename = ss.ownerNode.getAttribute("data-theme-name"); - // attribute not set => non-theme stylesheet => ignore - if(themename === null) continue; - // To distinguish the default (primary) theme, it needs to have the data-theme-primary - // attribute set. - var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null); - // If we find a matching theme (and it's not the default), we'll set active to non-null - if(!isprimary && themename === theme) active = i; - // Store the style sheets of inactive themes so that we could disable them - if(themename !== theme) disabled.push(ss); - } - if(active !== null) { - // If we did find an active theme, we'll (1) add the theme--$(theme) class to - document.getElementsByTagName('html')[0].className = "theme--" + theme; - // and (2) disable all the other theme stylesheets - disabled.forEach(function(ss){ - ss.disabled = true; - }); - } -} -set_theme_from_local_storage(); diff --git a/docs/build/cite/index.html b/docs/build/cite/index.html deleted file mode 100644 index 69f97838..00000000 --- a/docs/build/cite/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Citing EAGO · EAGO.jl: Easy Advanced Global Optimization

    Citing EAGO

    A paper about the EAGO software package is currently under preparation. In the meantime, please feel free to cite the conference presentation below:

    Wilhelm, Matthew; Stuber, Matthew (October 2017) Easy Advanced Global
    -Optimization (EAGO): An Open-Source Platform for Robust and Global Optimization
    -in Julia. Presented at the AIChE Annual Meeting in Minneapolis, MN.
    diff --git a/docs/build/full_Logo1.png b/docs/build/full_Logo1.png deleted file mode 100644 index 715e0976..00000000 Binary files a/docs/build/full_Logo1.png and /dev/null differ diff --git a/docs/build/index.html b/docs/build/index.html deleted file mode 100644 index bf161d6f..00000000 --- a/docs/build/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Introduction · EAGO.jl: Easy Advanced Global Optimization

    full_Logo

    EAGO - Easy Advanced Global Optimization in Julia

    A flexible-framework for global and robust optimization in Julia

    Authors

    • Matthew Wilhelm, Department of Chemical and Biomolecular Engineering, University of Connecticut (UCONN)

    Overview

    EAGO is a global and robust optimization platform based on McCormick relaxations. It contains the first widely accessible global optimization routine based on generalized McCormick relaxations. With the exception of calls to local solvers and linear algebra routines, EAGO is written entirely in native Julia. The solver is quite flexibly arranged so the end user can easily customize low-level routines.

    Installing EAGO

    EAGO is registered Julia package. It can be installed using the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run the following command

    pkg> add EAGO

    Currently, EAGO is tied to a 0.19 or greater version of JuMP. This allows a replication of some of the internal features shared by EAGO and JuMP's AD scheme aka generation of Wergert Tapes pass evaluators between JuMP and EAGO etc.

    pkg> add JuMP

    Once JuMP 0.19+ is registered EAGO will be updated to eliminate the need for this.

    Examples

    A few examples are provided in the documentation website. More involved examples are provided at in the form of Jupyter Notebooks at EAGO-notebooks and can be run using IJulia. To add IJulia

    pkg> add IJulia

    Then launch the Jupyter notebook using the following command from the Julia terminal,

    julia> using IJulia; notebook()

    Then simply navigate to the example directory and run the example of most interest.

    diff --git a/docs/build/ref/index.html b/docs/build/ref/index.html deleted file mode 100644 index b5522bbc..00000000 --- a/docs/build/ref/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -References · EAGO.jl: Easy Advanced Global Optimization

    References

    Branch and Bound

    • Floudas, Christodoulos A. Deterministic global optimization: theory, methods and applications. Vol. 37. Springer Science & Business Media, 2013.
    • Horst, Reiner, and Hoang Tuy. Global optimization: Deterministic approaches. Springer Science & Business Media, 2013.

    Parametric Interval Techniques

    • E. R. Hansen and G. W. Walster. Global Optimization Using Interval Analysis. Marcel Dekker, New York, second edition, 2004.
    • R. Krawczyk. Newton-algorithmen zur bestimmung con nullstellen mit fehler-schranken. Computing, 4:187–201, 1969.
    • R. Krawczyk. Interval iterations for including a set of solutions. Computing, 32:13–31, 1984.
    • C. Miranda. Un’osservatione su un teorema di brower. Boll. Un. Mat. Ital., 3:5–7, 1940.
    • A. Neumaier. Interval Methods for Systems of Equations. Cambridge University Press, Cambridge, 1990.
    • R. E. Moore. A test for existence of solutions to nonlinear systems. SIAM Journal on Numerical Analysis, 14(4):611–615, 1977.

    Domain Reduction

    • Benhamou, F., & Older, W.J. (1997). Applying interval arithmetic to real, integer, and boolean constraints. The Journal of Logic Programming, 32, 1–24.
    • Caprara, A., & Locatelli, M. (2010). Global optimization problems and domain reduction strategies. Mathematical Programming, 125, 123–137.
    • Gleixner, A.M., Berthold, T., Müller, B., & Weltge, S. (2016). Three enhancements for optimization-based bound tightening. ZIB Report, 15–16.
    • Ryoo, H.S., & Sahinidis, N.V. (1996). A branch-and-reduce approach to global optimization. Journal of Global Optimization, 8, 107–139.
    • Schichl, H., & Neumaier, A. (2005). Interval analysis on directed acyclic graphs for global optimization. Journal of Global Optimization, 33, 541–562.
    • Tawarmalani, M., & Sahinidis, N.V. (2005). A polyhedral branch-and-cut approach to global optimization. Mathematical Programming, 103, 225–249.
    • Vu, X., Schichl, H., & Sam-Haroud, D. (2009). Interval propagation and search on directed acyclic graphs for numerical constraint solving. Journal of Global Optimization, 45, 499–531.

    Generalized McCormick Relaxations

    • Chachuat, B.: MC++: a toolkit for bounding factorable functions, v1.0. Retrieved 2 July 2014 https://projects.coin-or.org/MCpp (2014)
    • A. Mitsos, B. Chachuat, and P. I. Barton. McCormick-based relaxations of algorithms. SIAM Journal on Optimization, 20(2):573–601, 2009.
    • G. P. McCormick. Computability of global solutions to factorable nonconvex programs: Part I-Convex underestimating problems. Mathematical Programming, 10:147–175, 1976.
    • G. P. McCormick. Nonlinear programming: Theory, Algorithms, and Applications. Wiley, New York, 1983.
    • J. K. Scott, M. D. Stuber, and P. I. Barton. Generalized McCormick relaxations. Journal of Global Optimization, 51(4):569–606, 2011.
    • Stuber, M.D., Scott, J.K., Barton, P.I.: Convex and concave relaxations of implicit functions. Optim. Methods Softw. 30(3), 424–460 (2015)
    • A. Tsoukalas and A. Mitsos. Multivariate McCormick Relaxations. Journal of Global Optimization, 59:633–662, 2014.
    • K.A. Khan, HAJ Watson, P.I. Barton. Differentiable McCormick relaxations. Journal of Global Optimization, 67(4):687-729 (2017).
    • A., Wechsung JK Scott, HAJ Watson, and PI Barton. Reverse propagation of McCormick relaxations. Journal of Global Optimization 63(1):1-36 (2015).

    Semi-Infinite Programming

    • A. Mitsos. Global optimization of semi-infinite programs via restriction of the right-hand side. Optimization, 60(10-11):1291-1308, 2009.
    • Stuber, M.D. and Barton, P. I. Semi-Infinite Optimization With Implicit Functions. Industrial & Engineering Chemistry Research, 54:307-317, 2015.
    diff --git a/docs/build/search/index.html b/docs/build/search/index.html deleted file mode 100644 index 7fb2e628..00000000 --- a/docs/build/search/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Search · EAGO.jl: Easy Advanced Global Optimization diff --git a/docs/build/search_index.js b/docs/build/search_index.js deleted file mode 100644 index 37f1d191..00000000 --- a/docs/build/search_index.js +++ /dev/null @@ -1,3 +0,0 @@ -var documenterSearchIndex = {"docs": -[{"location":"McCormick/usage/#Basic-Usage-1","page":"Basic Usage","title":"Basic Usage","text":"","category":"section"},{"location":"McCormick/usage/#**Bounding-a-function-via-smooth-McCormick-objects**-1","page":"Basic Usage","title":"Bounding a function via smooth McCormick objects","text":"","category":"section"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"In order to bound a function using a McCormick relaxation. You first construct structure that bounds the input variables then you construct pass these variables two a function.","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"In the example below, convex/concave relaxations of the function f(x)=sin(2x)+exp(x)-x are calculated at x = 1 on the interval [-2,3].","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"using EAGO, IntervalArithmetic\n\n# create MC object for x = 2.0 on [1.0,3.0] for relaxing\n# a function f(x) on the interval Intv\n\nf(x) = x*(x-5.0)*sin(x)\n\nx = 2.0 # value of independent variable x\nIntv = Interval(1.0,4.0) # define interval to relax over\n\n# create McCormick object\nxMC = MC{1,NS}(x,Intv,1)\n\nfMC = f(xMC) # relax the function\n\ncv = fMC.cv # convex relaxation\ncc = fMC.cc # concave relaxation\ncvgrad = fMC.cv_grad # subgradient/gradient of convex relaxation\nccgrad = fMC.cc_grad # subgradient/gradient of concave relaxation\nIv = fMC.Intv # retrieve interval bounds of f(x) on Intv","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"The plotting the results we can easily generate visual the convex and concave relaxations, interval bounds, and affine bounds constructed using the subgradient at the middle of X.","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"(Image: Figure_1)","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"If we instead use the constructor xMC = MC{1,Diff}(x,Intv,1) in the above code, and then re-plot we arrive at the below graph","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"set_diff_relax!(1)","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"(Image: Figure_2)","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"This can readily be extended to multivariate functions as shown below","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"\nf(x) = max(x[1],x[2])\n\nx = [2.0 1.0] # values of independent variable x\nIntv = [Interval(-4.0,5.0), Interval(-5.0,3.0)] # define intervals to relax over\n\n# create McCormick object\nxMC = [MC{2,Diff}(x[i], Intv[i], i) for i=1:2)]\n\nfMC = f(xMC) # relax the function\n\ncv = fMC.cv # convex relaxation\ncc = fMC.cc # concave relaxation\ncvgrad = fMC.cv_grad # subgradient/gradient of convex relaxation\nccgrad = fMC.cc_grad # subgradient/gradient of concave relaxation\nIv = fMC.Intv # retrieve interval bounds of f(x) on Intv","category":"page"},{"location":"McCormick/usage/#","page":"Basic Usage","title":"Basic Usage","text":"(Image: Figure_3)","category":"page"},{"location":"Optimizer/high_performance/#High-Performance-Configuration-1","page":"High-Performance Configuration","title":"High-Performance Configuration","text":"","category":"section"},{"location":"Optimizer/high_performance/#LP-Solver-Selection-1","page":"High-Performance Configuration","title":"LP Solver Selection","text":"","category":"section"},{"location":"Optimizer/high_performance/#","page":"High-Performance Configuration","title":"High-Performance Configuration","text":"By default, EAGO uses GLPK for solving linear subproblems introduced. Using a commercial linear solver is highly recommended such as Gurobi, CPLEX, or XPRESS is highly recommended. Both Gurobi and CPLEX are free for academics and installation information can be found through http://www.gurobi.com/academia/academia-center and https://www.ibm.com/developerworks/community/blogs/jfp/entry/CPLEXIsFreeForStudents?lang=en, respectively. ","category":"page"},{"location":"Optimizer/high_performance/#","page":"High-Performance Configuration","title":"High-Performance Configuration","text":"A non-default LP solver can then be selected by the user via a series of keyword argument inputs as illustrated in the code snippet below. The relaxed_optimizer contains an instance optimizer with valid relaxations that are made at the root node and is updated with affine relaxations in place. Options can be passed to this optimizer using keyword arguments when initializing EAGO using the withoptimizer syntax in JuMP by defining an Iterators.Pairs structure assigning it to the `relaxedoptimizer_kwargs` keyword argument. MOI.","category":"page"},{"location":"Optimizer/high_performance/#","page":"High-Performance Configuration","title":"High-Performance Configuration","text":"\n# Create opt EAGO Optimizer with CPLEX for use with MOI routines\nopt = EAGO.Optimizer(relaxed_optimizer = Gurobi.Optimizer(OutputFlag=0))\n\n# Create the same model m using an options dictionary in JuMP\nrelaxed_optimizer_kwargs = Dict{Symbol, Any}()\nopt_dict[:relaxed_optimizer] = Gurobi.Optimizer()\nopt_dict[:relaxed_optimizer_kwargs] = Iterators.Pairs([:OutputFlag], [0])\n\nm = JuMP.Model(with_optimizer(EAGO.Optimizer; opt_dict...))\n\n# Create the same model m is keyword arguments in JuMP\nm = JuMP.Model(with_optimizer(EAGO.Optimizer; relaxed_optimizer = Gurobi.Optimizer(),\n relaxed_optimizer_kwargs = Iterators.Pairs([:OutputFlag], [0])))","category":"page"},{"location":"Optimizer/high_performance/#Ipopt-Build-1","page":"High-Performance Configuration","title":"Ipopt Build","text":"","category":"section"},{"location":"Optimizer/high_performance/#","page":"High-Performance Configuration","title":"High-Performance Configuration","text":"Ipopt is the recommended solver for upper bounding problems. Ipopt's performance is highly dependent on the linear algebra package used (up to 30x). By default MUMPS is used. It's recommended that you either compile Ipopt with HSL MA57 or the Pardiso linear algebra packages with a machine specific Blas library (for Intel users the JuliaPro MKL version is recommended). For information on this, see the below links:","category":"page"},{"location":"Optimizer/high_performance/#","page":"High-Performance Configuration","title":"High-Performance Configuration","text":"Compiling Ipopt: https://www.coin-or.org/Ipopt/documentation/node13.html\nJulia Specifics:\nPointing Ipopt to a compiled version:\nIpopt Package Info: https://github.com/JuliaOpt/Ipopt.jl\nDiscourse discussion: https://discourse.julialang.org/t/use-ipopt-with-custom-version/9176\nIssues using Pardiso:\nUbuntu: https://github.com/JuliaOpt/Ipopt.jl/issues/106\nWindows: https://github.com/JuliaOpt/Ipopt.jl/issues/83\nHSL Website: http://www.hsl.rl.ac.uk/ipopt/\nPardiso Website: https://pardiso-project.org/","category":"page"},{"location":"McCormick/type/#**Types**-1","page":"Types","title":"Types","text":"","category":"section"},{"location":"McCormick/type/#","page":"Types","title":"Types","text":" McCormick.MC\n McCormick.RelaxTag","category":"page"},{"location":"McCormick/type/#EAGO.McCormick.MC","page":"Types","title":"EAGO.McCormick.MC","text":"MC\n\nMC{N, T <: RelaxTag} <: Real is the McCormick (w/ (sub)gradient) structure which is used to overload standard calculations. The fields are:\n\ncc::Float64: Concave relaxation\ncv::Float64: Convex relaxation\ncc_grad::SVector{N,Float64}: (Sub)gradient of concave relaxation\ncv_grad::SVector{N,Float64}: (Sub)gradient of convex relaxation\nIntv::Interval{Float64}: Interval bounds\ncnst::Bool: Flag for whether the bounds are constant\n\n\n\n\n\n","category":"type"},{"location":"McCormick/type/#EAGO.McCormick.RelaxTag","page":"Types","title":"EAGO.McCormick.RelaxTag","text":"RelaxTag\n\nAn abstract type the subtypes of which define the manner of relaxation that will be performed for each operator applied to the MC object. Currently, the struct NS which specifies that standard (Mitsos 2009) are to be used is fully supported. Limited support is provided for differentiable McCormick relaxations specified by struct Diff (Khan 2017) and struct MV struct MV (Tsoukalas 2011.)\n\n\n\n\n\n","category":"type"},{"location":"McCormick/type/#**Constructors-for-MC**-1","page":"Types","title":"Constructors for MC","text":"","category":"section"},{"location":"McCormick/type/#","page":"Types","title":"Types","text":" MC{N,T}(y::Float64)","category":"page"},{"location":"McCormick/type/#EAGO.McCormick.MC-Union{Tuple{Float64}, Tuple{N}, Tuple{T}} where T where N","page":"Types","title":"EAGO.McCormick.MC","text":"MC{N,T}(y::Interval{Float64})\n\nConstructs McCormick relaxation with convex relaxation equal to y.lo and concave relaxation equal to y.hi.\n\n\n\n\n\nMC{N,T}(y::Float64)\n\nConstructs McCormick relaxation with convex relaxation equal to y and concave relaxation equal to y.\n\n\n\n\n\nMC{N,T}(cv::Float64, cc::Float64)\n\nConstructs McCormick relaxation with convex relaxation equal to cv and concave relaxation equal to cc.\n\n\n\n\n\nMC{N,T}(val::Float64, Intv::Interval{Float64}, i::Int64)\n\nConstructs McCormick relaxation with convex relaxation equal to val, concave relaxation equal to val, interval bounds of Intv, and a unit subgradient with nonzero's ith dimension of length N.\n\n\n\n\n\n","category":"method"},{"location":"SemiInfinite/semiinfinite/#Solving-Semi-Infinite-Programming-1","page":"Semi-Infinite Programming","title":"Solving Semi-Infinite Programming","text":"","category":"section"},{"location":"SemiInfinite/semiinfinite/#","page":"Semi-Infinite Programming","title":"Semi-Infinite Programming","text":"Matthew Wilhelm Department of Chemical and Biomolecular Engineering, University of Connecticut","category":"page"},{"location":"SemiInfinite/semiinfinite/#Using-EAGO-to-solve-a-SIP-1","page":"Semi-Infinite Programming","title":"Using EAGO to solve a SIP","text":"","category":"section"},{"location":"SemiInfinite/semiinfinite/#","page":"Semi-Infinite Programming","title":"Semi-Infinite Programming","text":"Semi-infinite programming remains an active area of research. In general, the solution of semi-infinite programs with nonconvex semi-infinite constraints of the below form are extremely challenging:","category":"page"},{"location":"SemiInfinite/semiinfinite/#","page":"Semi-Infinite Programming","title":"Semi-Infinite Programming","text":"","category":"page"},{"location":"SemiInfinite/semiinfinite/#","page":"Semi-Infinite Programming","title":"Semi-Infinite Programming","text":"EAGO implements the SIPres of [1] to determine a globally optimal solution to problems of the above form. This accomplished using the explicit_sip_solve function which returns the optimal value, the solution, and a boolean feasibility value. To illustrate the functions use, a simple example is presented here which solves the below problem:","category":"page"},{"location":"SemiInfinite/semiinfinite/#","page":"Semi-Infinite Programming","title":"Semi-Infinite Programming","text":"","category":"page"},{"location":"SemiInfinite/semiinfinite/#","page":"Semi-Infinite Programming","title":"Semi-Infinite Programming","text":"using EAGO, JuMP\n\n# Define semi-infinite program\nf(x) = (1/3)*x[1]^2 + x[2]^2 + x[1]/2\ngSIP(x,p) = (1.0 - (x[1]^2)*(p[1]^2))^2 - x[1]*p[1]^2 - x[2]^2 + x[2]\n\nx_l = [-1000.0, -1000.0]\nx_u = [1000.0, 1000.0]\np_l = [0.0]\np_u = [1.0]\n\n# Solve the SIP problem\nsip_result = explicit_sip_solve(x_l, x_u, p_l, p_u, f, gSIP)\n\nprintln(\"The global minimum of the semi-infinite program is between: $(sip_result.lower_bound) and $(sip_result.upper_bound).\")\nprintln(\"The global minimum is attained at: x = $(sip_result.xsol).\")\nprintln(\"Is the problem feasible? (sip_result.feasibility).\")","category":"page"},{"location":"SemiInfinite/semiinfinite/#Semi-infinite-solver-1","page":"Semi-Infinite Programming","title":"Semi-infinite solver","text":"","category":"section"},{"location":"SemiInfinite/semiinfinite/#","page":"Semi-Infinite Programming","title":"Semi-Infinite Programming","text":" explicit_sip_solve\n SIPProblem\n SIPResult","category":"page"},{"location":"SemiInfinite/semiinfinite/#EAGO.explicit_sip_solve","page":"Semi-Infinite Programming","title":"EAGO.explicit_sip_solve","text":"explicitsipsolve\n\nSolve an SIP with decision variable bounds x_l to x_u, uncertain variable bounds p_l to p_u, an objective function of f, and gSIP seminfiniite constraint(s).\n\n\n\n\n\n","category":"function"},{"location":"SemiInfinite/semiinfinite/#EAGO.SIPProblem","page":"Semi-Infinite Programming","title":"EAGO.SIPProblem","text":" SIPProblem\n\nStructure storing problem information for the solution routine.\n\n\n\n\n\n","category":"type"},{"location":"SemiInfinite/semiinfinite/#EAGO.SIPResult","page":"Semi-Infinite Programming","title":"EAGO.SIPResult","text":" SIPResult\n\nStructure storing the results of the SIPres algorithm.\n\n\n\n\n\n","category":"type"},{"location":"Dev/future/#Future-Work-1","page":"Future Work","title":"Future Work","text":"","category":"section"},{"location":"Dev/future/#Current-Activity:-1","page":"Future Work","title":"Current Activity:","text":"","category":"section"},{"location":"Dev/future/#","page":"Future Work","title":"Future Work","text":"Update CI testing.\nSpecialized algorithms for relaxing ODE constrained problems and solving global and robust optimization problems.\nExtensions for nonconvex dynamic global & robust optimization.\nProvide support for mixed-integer problems.\nUpdate EAGO to support nonsmooth problems (requires: a nonsmooth local nlp optimizer or lexiographic AD, support for relaxations is already included).\nPerformance assessment of nonlinear (differentiable) relaxations and incorporation into main EAGO routine.\nEvaluation and incorporation of implicit relaxation routines in basic solver.","category":"page"},{"location":"Dev/future/#Other-things-on-the-wishlist-(but-not-actively-being-worked-on):-1","page":"Future Work","title":"Other things on the wishlist (but not actively being worked on):","text":"","category":"section"},{"location":"Dev/future/#","page":"Future Work","title":"Future Work","text":"Implement the interval constraint propagation scheme presented in Vu 2008. For improved convergences.\nA parametric bisection routine will be updated that can divide the (X,P) space into a series of boxes that all contain unique branches of the implicit function p->y(p).\nProvide a better interface the nonconvex semi-infinite programs solvers (JuMPeR extension?).\nAdd additional McCormick relaxations.\nAdd handling for domain reduction of special expression forms.","category":"page"},{"location":"Optimizer/domain_reduction/#Domain-Reduction-1","page":"Domain Reduction","title":"Domain Reduction","text":"","category":"section"},{"location":"Optimizer/domain_reduction/#Duality-Based-Bound-Tightening-1","page":"Domain Reduction","title":"Duality-Based Bound Tightening","text":"","category":"section"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"Variable bound tightening based on the duality multipliers are supported.","category":"page"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"variable_dbbt!","category":"page"},{"location":"Optimizer/domain_reduction/#EAGO.variable_dbbt!","page":"Domain Reduction","title":"EAGO.variable_dbbt!","text":"variable_dbbt!\n\nTightens the bounds of the _current_node using the current global upper bound and the duality information obtained from the relaxation.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#Special-Forms-1","page":"Domain Reduction","title":"Special Forms","text":"","category":"section"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"Bound tightening for linear forms, univariate quadratic forms, and bivariate quadratic forms are also supported.","category":"page"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"classify_quadratics!\nlp_bound_tighten\nunivariate_kernel\nunivariate_quadratic","category":"page"},{"location":"Optimizer/domain_reduction/#EAGO.classify_quadratics!","page":"Domain Reduction","title":"EAGO.classify_quadratics!","text":"classify_quadratics!\n\nClassifies constraints as univariate or bivariate and adds them to storage vectors.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#EAGO.lp_bound_tighten","page":"Domain Reduction","title":"EAGO.lp_bound_tighten","text":"lp_bound_tighten\n\nPerforms the linear bound tightening.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#EAGO.univariate_kernel","page":"Domain Reduction","title":"EAGO.univariate_kernel","text":"univariate_kernel\n\nKernel of the bound tightening operation on univariant qudaratic functions. Called for each univariate function.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#EAGO.univariate_quadratic","page":"Domain Reduction","title":"EAGO.univariate_quadratic","text":"univariate_quadratic\n\nPerforms bound tightening on all univariate quadratic functions.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#Constraint-Propagation-1","page":"Domain Reduction","title":"Constraint Propagation","text":"","category":"section"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"EAGO contains a constraint propagation architecture that supported forward and reverse evaluation of set-valued functions on the directed acyclic graph (DAG). The interval contractor and reverse McCormick relaxation-based contractors are currently available.","category":"page"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"cpwalk","category":"page"},{"location":"Optimizer/domain_reduction/#EAGO.cpwalk","page":"Domain Reduction","title":"EAGO.cpwalk","text":"cpwalk\n\nPerforms forward-reverse pass on directed graph as part of constraint propagation.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#Optimization-Based-Bound-Tightening-1","page":"Domain Reduction","title":"Optimization-Based Bound Tightening","text":"","category":"section"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"EAGO makes use of an optimization-based bound tightening scheme using filtering and greedy ordering as detailed in: Gleixner, A.M., Berthold, T., Müller, B. et al. J Glob Optim (2017) 67: 731. https://doi.org/10.1007/s10898-016-0450-4","category":"page"},{"location":"Optimizer/domain_reduction/#","page":"Domain Reduction","title":"Domain Reduction","text":"aggressive_filtering!\naggressive_obbt_on_heurestic\nbool_indx_diff\nobbt\ntrivial_filtering!","category":"page"},{"location":"Optimizer/domain_reduction/#EAGO.aggressive_filtering!","page":"Domain Reduction","title":"EAGO.aggressive_filtering!","text":"aggressive_filtering!\n\nExcludes OBBT on variable indices after a search in a filtering direction.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#EAGO.aggressive_obbt_on_heurestic","page":"Domain Reduction","title":"EAGO.aggressive_obbt_on_heurestic","text":"aggressive_obbt_on_heurestic\n\nRoutine that determines if aggressive filtering should be used. Currently, a user-specified option.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#EAGO.bool_indx_diff","page":"Domain Reduction","title":"EAGO.bool_indx_diff","text":"bool_indx_diff\n\nUtility function used to set vector of booleans z to x & ~y. Avoids the generation of conversion of the BitArray created by broadcasting logical operators.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#EAGO.obbt","page":"Domain Reduction","title":"EAGO.obbt","text":"obbt\n\nPerforms OBBT with filtering and greedy ordering as detailed in: Gleixner, A.M., Berthold, T., Müller, B. et al. J Glob Optim (2017) 67: 731. https://doi.org/10.1007/s10898-016-0450-4\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/domain_reduction/#EAGO.trivial_filtering!","page":"Domain Reduction","title":"EAGO.trivial_filtering!","text":"trivial_filtering!\n\nExcludes OBBT on variable indices that are tight for the solution of the relaxation.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/bnb_back/#EAGO's-Branch-and-Bound-Routine-1","page":"EAGO's Branch and Bound Routine","title":"EAGO's Branch and Bound Routine","text":"","category":"section"},{"location":"Optimizer/bnb_back/#","page":"EAGO's Branch and Bound Routine","title":"EAGO's Branch and Bound Routine","text":"This component is meant to provide a flexible framework for implementing spatial branch-and-bound based optimization routines in Julia. All components of the branch-and-bound routine can be customized by the individual user: lower bounding problem, upper bounding problem.","category":"page"},{"location":"Optimizer/bnb_back/#Branch-and-Bound-Node-Storage-1","page":"EAGO's Branch and Bound Routine","title":"Branch and Bound Node Storage","text":"","category":"section"},{"location":"Optimizer/bnb_back/#","page":"EAGO's Branch and Bound Routine","title":"EAGO's Branch and Bound Routine","text":" EAGO.NodeBB","category":"page"},{"location":"Optimizer/bnb_back/#EAGO.NodeBB","page":"EAGO's Branch and Bound Routine","title":"EAGO.NodeBB","text":"NodeBB\n\nStores information associated with each node in Branch & Bound tree.\n\nlower_variable_bounds::Vector{Float64}: Lower bounds of variable box.\nupper_variable_bounds::Vector{Float64}: Upper bounds of variable box.\nlower_bound::Float64: Lower bound of problem solution on nodeBB\nupper_bound::Float64: Upper bound of problem solution on nodeBB\ndepth::Int64: Depth of node in B&B tree.\nid::Int64: Unique id for each node.\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/bnb_back/#Customizable-subroutines-1","page":"EAGO's Branch and Bound Routine","title":"Customizable subroutines","text":"","category":"section"},{"location":"Optimizer/bnb_back/#","page":"EAGO's Branch and Bound Routine","title":"EAGO's Branch and Bound Routine","text":" EAGO.add_cut!(t::ExtensionType, x::Optimizer)\n EAGO.branch_node!(t::ExtensionType, x::Optimizer)\n EAGO.convergence_check(t::ExtensionType, x::Optimizer)\n EAGO.cut_condition(t::ExtensionType, x::Optimizer)\n EAGO.fathom!(t::ExtensionType, d::Optimizer)\n EAGO.lower_problem!(t::ExtensionType, x::Optimizer)\n EAGO.relax_objective!(t::ExtensionType, x::Optimizer, x0::Vector{Float64})\n EAGO.relax_problem!(t::ExtensionType, x::Optimizer, v::Vector{Float64}, q::Int64)\n EAGO.node_selection!(t::ExtensionType, x::Optimizer)\n EAGO.optimize_hook!(t::ExtensionType, x::Optimizer)\n EAGO.postprocess!(t::ExtensionType, x::Optimizer)\n EAGO.preprocess!(t::ExtensionType, x::Optimizer)\n EAGO.repeat_check(t::ExtensionType, x::Optimizer)\n EAGO.single_storage!(t::ExtensionType, x::Optimizer)\n EAGO.termination_check(t::ExtensionType, x::Optimizer)\n EAGO.upper_problem!(t::ExtensionType, x::Optimizer)","category":"page"},{"location":"Optimizer/bnb_back/#EAGO.add_cut!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.add_cut!","text":"add_cut!(t::ExtensionType, x::Optimizer)\n\nAdds a cut for each constraint and the objective function to the subproblem.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.branch_node!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.branch_node!","text":"branch_node!(t::ExtensionType, x::Optimizer)\n\nCreates two nodes from currentnode using information available the x and stores them to the stack. By default, relative width bisection is perfomed at a point `branchpntwhich is a convex combination (parameter: branch_cvx_factor) of the solution to the relaxation and the midpoint of the node. If this solution lies withinbranchoffset/widthof a bound then the branch point is moved to a distance ofbranchoffset/width` from the bound.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.convergence_check-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.convergence_check","text":"convergence_check(t::ExtensionType, x::Optimizer)\n\nChecks for convergence of algorithm with respect to absolute and/or relative tolerances.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.cut_condition-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.cut_condition","text":"cut_condition(t::ExtensionType, x::Optimizer)\n\nChecks if a cut should be added and computes a new reference point to add the cut at. If no cut should be added the constraints not modified in place are deleted from the relaxed optimizer and the solution is compared with the interval lower bound. The best lower bound is then used.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.fathom!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.fathom!","text":"fathom!(t::ExtensionType, d::Optimizer)\n\nSelects and deletes nodes from stack with lower bounds greater than global upper bound.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.lower_problem!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.lower_problem!","text":"lower_problem!(t::ExtensionType, x::Optimizer)\n\nConstructs and solves the relaxation using the default EAGO relaxation scheme and optimizer on node y.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.relax_objective!-Tuple{ExtensionType,Optimizer,Array{Float64,1}}","page":"EAGO's Branch and Bound Routine","title":"EAGO.relax_objective!","text":"relax_objective!(t::ExtensionType, x::Optimizer, x0::Vector{Float64})\n\nA rountine that only relaxes the objective.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.relax_problem!-Tuple{ExtensionType,Optimizer,Array{Float64,1},Int64}","page":"EAGO's Branch and Bound Routine","title":"EAGO.relax_problem!","text":"relax_problem!(t::ExtensionType, x::Optimizer, v::Vector{Float64}, q::Int64)\n\nA rountine that updates the current node for the Evaluator and relaxes all nonlinear constraints and quadratic constraints.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.node_selection!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.node_selection!","text":"node_selection!(t::ExtensionType, x::Optimizer)\n\nSelects node with the lowest lower bound in stack.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.optimize_hook!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.optimize_hook!","text":"optimize_hook!(t::ExtensionType, x::Optimizer)\n\nProvides a hook for extensions to EAGO as opposed to standard global, local, or linear solvers.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.postprocess!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.postprocess!","text":"postprocess!(t::ExtensionType, x::Optimizer)\n\nDefault postprocess perfoms duality-based bound tightening on the y.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.preprocess!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.preprocess!","text":"preprocess!(t::ExtensionType, x::Optimizer)\n\nRuns interval, linear, quadratic contractor methods followed by obbt and a constraint programming walk up to tolerances specified in EAGO.Optimizer object.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.repeat_check-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.repeat_check","text":"repeat_check(t::ExtensionType, x::Optimizer)\n\nChecks to see if current node should be reprocessed.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.single_storage!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.single_storage!","text":"single_storage!(t::ExtensionType, x::Optimizer)\n\nStores the current node to the stack after updating lower/upper bounds.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.termination_check-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.termination_check","text":"termination_check(t::ExtensionType, x::Optimizer)\n\nChecks for termination of algorithm due to satisfying absolute or relative tolerance, infeasibility, or a specified limit, returns a boolean valued true if algorithm should continue.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.upper_problem!-Tuple{ExtensionType,Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.upper_problem!","text":"upper_problem!(t::ExtensionType, x::Optimizer)\n\nDefault upper bounding problem which simply calls solve_local_nlp! to solve the nlp locally.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#Internal-Subroutines-1","page":"EAGO's Branch and Bound Routine","title":"Internal Subroutines","text":"","category":"section"},{"location":"Optimizer/bnb_back/#","page":"EAGO's Branch and Bound Routine","title":"EAGO's Branch and Bound Routine","text":" EAGO.cut_update(x::Optimizer)\n EAGO.default_nlp_heurestic(x::Optimizer, y::NodeBB)\n EAGO.interval_bound\n EAGO.interval_lower_bound!(x::Optimizer, y::NodeBB)\n EAGO.is_globally_optimal(t::MOI.TerminationStatusCode, r::MOI.ResultStatusCode)\n EAGO.is_feasible_solution(t::MOI.TerminationStatusCode, r::MOI.ResultStatusCode)\n EAGO.log_iteration!(x::Optimizer)\n EAGO.same_box(x::NodeBB,y::NodeBB, atol::Float64)\n EAGO.solve_local_nlp!(x::Optimizer)\n EAGO.set_dual!(x::Optimizer)\n EAGO.update_relaxed_problem_box!(x::Optimizer, y::NodeBB)","category":"page"},{"location":"Optimizer/bnb_back/#EAGO.cut_update-Tuple{Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.cut_update","text":"cut_update(x::Optimizer)\n\nUpdates the internal storage in the optimizer after a valid feasible cut is added.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.default_nlp_heurestic-Tuple{Optimizer,NodeBB}","page":"EAGO's Branch and Bound Routine","title":"EAGO.default_nlp_heurestic","text":"default_nlp_heurestic(x::Optimizer, y::NodeBB)\n\nDefault check to see if the upper bounding problem should be run. By default, The upper bounding problem is run on every node up to depth upper_bounding_depth and is triggered with a probability of 0.5^(depth - upper_bounding_depth) afterwards.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.interval_bound","page":"EAGO's Branch and Bound Routine","title":"EAGO.interval_bound","text":"interval_bound\n\nComputes the natural interval extension of a MathOptInterface function s or ScalarQuadaraticFunction on a node y. Returns the lower bound if flag is true and the upper bound if flag is false.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/bnb_back/#EAGO.interval_lower_bound!-Tuple{Optimizer,NodeBB}","page":"EAGO's Branch and Bound Routine","title":"EAGO.interval_lower_bound!","text":"interval_lower_bound!(x::Optimizer, y::NodeBB)\n\nA fallback lower bounding problem that consists of an natural interval extension calculation. This is called when the optimizer used to compute the lower bound does not return a termination and primal status code indicating that it successfully solved the relaxation to a globally optimal point.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.is_globally_optimal-Tuple{MathOptInterface.TerminationStatusCode,MathOptInterface.ResultStatusCode}","page":"EAGO's Branch and Bound Routine","title":"EAGO.is_globally_optimal","text":"is_globally_optimal(t::MOI.TerminationStatusCode, r::MOI.ResultStatusCode)\n\nTakes an MOI.TerminationStatusCode and a MOI.ResultStatusCode and returns the tuple (valid_result::Bool, feasible::Bool). The value valid_result is true if the pair of codes prove that either the subproblem solution was solved to global optimality or the subproblem solution is infeasible. The value of feasible is true if the problem is feasible and false if the problem is infeasible.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.is_feasible_solution-Tuple{MathOptInterface.TerminationStatusCode,MathOptInterface.ResultStatusCode}","page":"EAGO's Branch and Bound Routine","title":"EAGO.is_feasible_solution","text":"is_feasible_solution(t::MOI.TerminationStatusCode, r::MOI.ResultStatusCode)\n\nTakes an MOI.TerminationStatusCode and a MOI.ResultStatusCode and returns true if this corresponds to a solution that is proven to be feasible. Returns false otherwise.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.log_iteration!-Tuple{Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.log_iteration!","text":"log_iteration!(x::Optimizer)\n\nIf 'loggingon' is true, the 'globallowerbound', 'globalupperbound', 'runtime', and 'nodecount' are stored every 'loginterval'. If 'logsubprobleminfo' then the lower bound, feasibility and run times of the subproblems are logged every 'log_interval'.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.same_box-Tuple{NodeBB,NodeBB,Float64}","page":"EAGO's Branch and Bound Routine","title":"EAGO.same_box","text":"same_box(x::NodeBB,y::NodeBB, atol::Float64)\n\nChecks that node x and y have equal domains withing a tolerance of atol.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.solve_local_nlp!-Tuple{Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.solve_local_nlp!","text":"solve_local_nlp!(x::Optimizer)\n\nConstructs and solves the problem locally on on node y updated the upper solution informaton in the optimizer.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.set_dual!-Tuple{Optimizer}","page":"EAGO's Branch and Bound Routine","title":"EAGO.set_dual!","text":"set_dual!(x::Optimizer)\n\nRetrieves the lower and upper duals for variable bounds from the relaxed_optimizer and sets the appropriate values in the _lower_lvd and _lower_uvd storage fields.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#EAGO.update_relaxed_problem_box!-Tuple{Optimizer,NodeBB}","page":"EAGO's Branch and Bound Routine","title":"EAGO.update_relaxed_problem_box!","text":"update_relaxed_problem_box!(x::Optimizer, y::NodeBB)\n\nUpdates the relaxed constraint by setting the constraint set of v == x*,xLi <= xi, andxi <= xUi` for each such constraint added to the relaxed optimizer.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/bnb_back/#Functions-for-generating-console-output-1","page":"EAGO's Branch and Bound Routine","title":"Functions for generating console output","text":"","category":"section"},{"location":"Optimizer/bnb_back/#","page":"EAGO's Branch and Bound Routine","title":"EAGO's Branch and Bound Routine","text":" EAGO.print_iteration!\n EAGO.print_node!\n EAGO.print_results!\n EAGO.print_solution!","category":"page"},{"location":"Optimizer/bnb_back/#EAGO.print_iteration!","page":"EAGO's Branch and Bound Routine","title":"EAGO.print_iteration!","text":"print_iteration!\n\nPrints the iteration information based on verbosity. The header is displayed every header_interval, the iteration info is displayed every iteration_interval.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/bnb_back/#EAGO.print_node!","page":"EAGO's Branch and Bound Routine","title":"EAGO.print_node!","text":"print_node!\n\nPrints node information for the B&B problem. Node id, bound, and interval box.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/bnb_back/#EAGO.print_results!","page":"EAGO's Branch and Bound Routine","title":"EAGO.print_results!","text":"print_results!\n\nPrints the results of a single bounding problem.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/bnb_back/#EAGO.print_solution!","page":"EAGO's Branch and Bound Routine","title":"EAGO.print_solution!","text":"print_solution!\n\nPrints solution information for the B&B problem. Displays first node found, solution value, solution, and time spent solving subproblems.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/relax_back/#Relaxation-Backend-1","page":"Relaxation Backend","title":"Relaxation Backend","text":"","category":"section"},{"location":"Optimizer/relax_back/#Quadratic-Relaxations-1","page":"Relaxation Backend","title":"Quadratic Relaxations","text":"","category":"section"},{"location":"Optimizer/relax_back/#","page":"Relaxation Backend","title":"Relaxation Backend","text":" EAGO.relax_convex_kernel\n EAGO.relax_nonconvex_kernel\n EAGO.relax_quadratic_gen_saf\n EAGO.relax_quadratic!","category":"page"},{"location":"Optimizer/relax_back/#EAGO.relax_convex_kernel","page":"Relaxation Backend","title":"EAGO.relax_convex_kernel","text":"relax_convex_kernel\n\nStores the kernel of the calculation required to relax convex quadratic constraints using the immutable dictionary to label terms.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/relax_back/#EAGO.relax_nonconvex_kernel","page":"Relaxation Backend","title":"EAGO.relax_nonconvex_kernel","text":"relax_nonconvex_kernel\n\nStores the kernel of the calculation required to relax nonconvex quadratic constraints using the immutable dictionary to label terms.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/relax_back/#EAGO.relax_quadratic_gen_saf","page":"Relaxation Backend","title":"EAGO.relax_quadratic_gen_saf","text":"relax_quadratic_gen_saf\n\nDefault routine for relaxing nonconvex quadratic constraint lower < func < upper on node n. Takes affine bounds of convex part at point x0 and secant line bounds on concave parts.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/relax_back/#EAGO.relax_quadratic!","page":"Relaxation Backend","title":"EAGO.relax_quadratic!","text":"relax_quadratic!\n\nRelaxes all quadratic constraints in x optimizer.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/relax_back/#Nonlinear-Relaxation-1","page":"Relaxation Backend","title":"Nonlinear Relaxation","text":"","category":"section"},{"location":"Optimizer/relax_back/#","page":"Relaxation Backend","title":"Relaxation Backend","text":"EAGO.relax_nlp!\nEAGO.objective_cut_linear!","category":"page"},{"location":"Optimizer/relax_back/#EAGO.relax_nlp!","page":"Relaxation Backend","title":"EAGO.relax_nlp!","text":"relax_nlp!\n\nA rountine that relaxes all nonlinear constraints excluding constraints specified as quadratic.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/relax_back/#EAGO.objective_cut_linear!","page":"Relaxation Backend","title":"EAGO.objective_cut_linear!","text":"objective_cut_linear!\n\nAdds linear objective cut constraint to the x.relaxed_optimizer.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/relax_back/#Nonlinear-Storage-Structures-1","page":"Relaxation Backend","title":"Nonlinear Storage Structures","text":"","category":"section"},{"location":"Optimizer/relax_back/#","page":"Relaxation Backend","title":"Relaxation Backend","text":" FunctionSetStorage\n SubexpressionSetStorage","category":"page"},{"location":"Optimizer/relax_back/#EAGO.FunctionSetStorage","page":"Relaxation Backend","title":"EAGO.FunctionSetStorage","text":"FunctionSetStorage\n\nA storage object for both set and number valued data required to compute relaxations which contains the tape used to compute a nonlinear function. The object is parameterized by a {N,T<:RelaxTag} where N corresponds the subgradient size used in the MC object.\n\nnd::Vector{JuMP.NodeData}\nadj::SparseMatrixCSC{Bool,Int64}\nconst_values::Vector{Float64}\nsetstorage::Vector{MC{N,T}}\nnumberstorage::Vector{Float64}\nnumvalued::Vector{Bool}\ntp1storage::Vector{Float64}\ntp2storage::Vector{Float64}\ntp3storage::Vector{Float64}\ntp4storage::Vector{Float64}\ntpdict::Dict{Int64,Tuple{Int64,Int64,Int64,Int64}}\ngrad_sparsity::Vector{Int64}\nhess_I::Vector{Int64}\nhess_J::Vector{Int64}\ndependent_subexpressions::Vector{Int64}\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/relax_back/#EAGO.SubexpressionSetStorage","page":"Relaxation Backend","title":"EAGO.SubexpressionSetStorage","text":"SubexpressionSetStorage\n\nA storage object for both set and number valued data required to compute relaxations which contains the tape used to compute a nonlinear subexpression. The object is parameterized by a {N,T<:RelaxTag} where N corresponds the the subgradient size used in the MC object.\n\nnd::Vector{JuMP.NodeData}\nadj::SparseMatrixCSC{Bool,Int64}\nconst_values::Vector{Float64}\nsetstorage::Vector{MC{N,T}}\nnumberstorage::Vector{Float64}\nnumvalued::Vector{Bool}\ntp1storage::Vector{Float64}\ntp2storage::Vector{Float64}\ntp3storage::Vector{Float64}\ntp4storage::Vector{Float64}\ntpdict::Dict{Int64,Tuple{Int64,Int64,Int64,Int64}}\nlinearity::JuMP._Derivatives.Linearity\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/relax_back/#Nonlinear-Evaluator-1","page":"Relaxation Backend","title":"Nonlinear Evaluator","text":"","category":"section"},{"location":"Optimizer/relax_back/#","page":"Relaxation Backend","title":"Relaxation Backend","text":" Evaluator","category":"page"},{"location":"Optimizer/relax_back/#EAGO.Evaluator","page":"Relaxation Backend","title":"EAGO.Evaluator","text":"Evaluator\n\nMOI.AbstractNLPEvaluator for calculating relaxations of nonlinear terms.\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/relax_back/#Internal-Functions-Used-by-Evaluator-1","page":"Relaxation Backend","title":"Internal Functions Used by Evaluator","text":"","category":"section"},{"location":"Optimizer/relax_back/#","page":"Relaxation Backend","title":"Relaxation Backend","text":" set_current_node!(x::Evaluator, n::NodeBB)\n eval_objective_lo(d::Evaluator)\n eval_constraint_cc(d::Evaluator, g::Vector{Float64}, y::Vector{Float64})\n eval_constraint_lo!(d::Evaluator, g::Vector{Float64})\n eval_constraint_hi!(d::Evaluator, g::Vector{Float64})\n eval_constraint_cc_grad(d::Evaluator, g, y)\n get_node_lower(d::FunctionSetStorage, i::Int64)\n get_node_upper(d::FunctionSetStorage, i::Int64)\n forward_reverse_pass(d::Evaluator, x::Vector{Float64})","category":"page"},{"location":"Optimizer/relax_back/#EAGO.set_current_node!-Tuple{Evaluator,NodeBB}","page":"Relaxation Backend","title":"EAGO.set_current_node!","text":"set_current_node!(x::Evaluator, n::NodeBB)\n\nSets the current node in the Evaluator structure.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.eval_objective_lo-Tuple{Evaluator}","page":"Relaxation Backend","title":"EAGO.eval_objective_lo","text":"eval_objective_lo\n\nRetrieves the lower bound of the objective.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.eval_constraint_cc-Tuple{Evaluator,Array{Float64,1},Array{Float64,1}}","page":"Relaxation Backend","title":"EAGO.eval_constraint_cc","text":"eval_constraint_cc(d::Evaluator, g::Vector{Float64}, y::Vector{Float64})\n\nPopulates g with the concave relaxations of the constraints of d evaluated at y.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.eval_constraint_lo!-Tuple{Evaluator,Array{Float64,1}}","page":"Relaxation Backend","title":"EAGO.eval_constraint_lo!","text":"eval_constraint_lo!(d::Evaluator, g::Vector{Float64})\n\nPopulates g with the lower bounds of the constraints of d.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.eval_constraint_hi!-Tuple{Evaluator,Array{Float64,1}}","page":"Relaxation Backend","title":"EAGO.eval_constraint_hi!","text":"eval_constraint_hi!(d::Evaluator, g::Vector{Float64})\n\nPopulates g with the upper bounds of the constraints of d.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.eval_constraint_cc_grad-Tuple{Evaluator,Any,Any}","page":"Relaxation Backend","title":"EAGO.eval_constraint_cc_grad","text":"eval_constraint_cc_grad(d::Evaluator, g, y)\n\nPopulates g with the subgradients of the constraints of d evaluated at y.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.get_node_lower-Tuple{FunctionSetStorage,Int64}","page":"Relaxation Backend","title":"EAGO.get_node_lower","text":"get_node_lower(d::FunctionSetStorage, i::Int64)\n\nRetreives the lower bound of ith term in the tape of d.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.get_node_upper-Tuple{FunctionSetStorage,Int64}","page":"Relaxation Backend","title":"EAGO.get_node_upper","text":"get_node_upper(d::FunctionSetStorage, i::Int64)\n\nRetreives the upper bound of ith term in the tape of d.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/relax_back/#EAGO.forward_reverse_pass-Tuple{Evaluator,Array{Float64,1}}","page":"Relaxation Backend","title":"EAGO.forward_reverse_pass","text":"forward_reverse_pass(d::Evaluator, x::Vector{Float64})\n\nPerforms a d.fw_repeats forward passes of the set-value evaluator each followed by a reverse pass if d.has_reverse as long as the node between passes differs by more that d.fw_atol at each iteration.\n\n\n\n\n\n","category":"method"},{"location":"Optimizer/udf_utilities/#User-Define-Functions-and-DAG-Utilities-1","page":"User-Define Functions and DAG Utilities","title":"User-Define Functions and DAG Utilities","text":"","category":"section"},{"location":"Optimizer/udf_utilities/#","page":"User-Define Functions and DAG Utilities","title":"User-Define Functions and DAG Utilities","text":"EAGO has included basic functionality to manipulate user-defined functions. These features are largely experimental and we're interested in providing additional for novel use cases. Please contact us by opening an issue in the Github issue tracker with any questions or requests for additional features.","category":"page"},{"location":"Optimizer/udf_utilities/#DAG-Substitution-and-Flattening-1","page":"User-Define Functions and DAG Utilities","title":"DAG Substitution and Flattening","text":"","category":"section"},{"location":"Optimizer/udf_utilities/#","page":"User-Define Functions and DAG Utilities","title":"User-Define Functions and DAG Utilities","text":"dag_flattening!\nflatten_expression!\nregister_substitution!\nTemplate_Graph\nTemplate_Node","category":"page"},{"location":"Optimizer/udf_utilities/#EAGO.Script.dag_flattening!","page":"User-Define Functions and DAG Utilities","title":"EAGO.Script.dag_flattening!","text":"dag_flattening!\n\nFlattens (usually) the dag by making all registered substitutions for every nonlinear term in the Optimizer.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/udf_utilities/#EAGO.Script.flatten_expression!","page":"User-Define Functions and DAG Utilities","title":"EAGO.Script.flatten_expression!","text":"flatten_expression!\n\nFlattens (usually) the dag by making all registered substitutions for the expression expr::_NonlinearExprData. Performs a depth-first search through the expression adding the terminal node to the stack, then checking to determine if it matches a registered substitution pattern. If it doesn't not then node is added to the new expression graph representation and it's children are added to the queue. If an expression (node) is identified as a pattern then it is substituted and any children expression nodes are then checked for patterns until the depth first search is exhausted.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/udf_utilities/#EAGO.Script.register_substitution!","page":"User-Define Functions and DAG Utilities","title":"EAGO.Script.register_substitution!","text":"register_substitution!\n\nSpecifies that the src::Template_Graph should be subsituted out for the trg::Template_Graph.\n\nConventions for substition, the expression to be checked always appears at key 1 in the Template_Graph and operations are ordered from low value to high value left to right so if 1 is a -, and 4 => 1, 3 => 1 then the expression is 4 - 3\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/udf_utilities/#EAGO.Script.Template_Graph","page":"User-Define Functions and DAG Utilities","title":"EAGO.Script.Template_Graph","text":"Template_Graph\n\nHolds a list of Template_Nodes, set of directed edges, lengths, an adjacency matrix and the number of children.\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/udf_utilities/#EAGO.Script.Template_Node","page":"User-Define Functions and DAG Utilities","title":"EAGO.Script.Template_Node","text":"Template_Node\n\nA structure which holds a symbol indicating whether the node is an operator, a number, or an expression type, a value which identifies the function or symbol value, potentially a numeric value num_value, and a check that can be run to verify the node is correct check.\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/udf_utilities/#User-Defined-Function-(UDF)-Scrubber-1","page":"User-Define Functions and DAG Utilities","title":"User-Defined Function (UDF) Scrubber","text":"","category":"section"},{"location":"Optimizer/udf_utilities/#","page":"User-Define Functions and DAG Utilities","title":"User-Define Functions and DAG Utilities","text":"scrub\nscrub!","category":"page"},{"location":"Optimizer/udf_utilities/#EAGO.Script.scrub","page":"User-Define Functions and DAG Utilities","title":"EAGO.Script.scrub","text":"scrub(f::Function, n::Int, inplace = false)\n\nReplaces storage objects and circumvents assertions that present a UDF from being overloaded with subtype Real objects by creating a function which overdubs f in ScrubCtx.\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/udf_utilities/#EAGO.Script.scrub!","page":"User-Define Functions and DAG Utilities","title":"EAGO.Script.scrub!","text":"scrub!(d::_NLPData)\n\nApplies scrub to every user-defined function in the a _NLPData structure.\n\n\n\n\n\n","category":"function"},{"location":"Dev/contributing/#How-to-Contribute-1","page":"How to Contribute","title":"How to Contribute","text":"","category":"section"},{"location":"Dev/contributing/#","page":"How to Contribute","title":"How to Contribute","text":"We're always happy to welcome work with additional collaborators and contributors. One of the easy ways for newcomers to contribute is by adding additional relaxations.","category":"page"},{"location":"Dev/contributing/#","page":"How to Contribute","title":"How to Contribute","text":"If you're interested in contributing in larger ways, please contact: Matthew Wilhelm","category":"page"},{"location":"Dev/contributing/#","page":"How to Contribute","title":"How to Contribute","text":"If you have any requests for additional functionality, bug fixes, or comments please feel free to open a new issue using Github issue tracker.","category":"page"},{"location":"McCormick/implicit/#Relaxation-of-Implicit-Functions-1","page":"Relaxation of Implicit Functions","title":"Relaxation of Implicit Functions","text":"","category":"section"},{"location":"McCormick/implicit/#High-level-functions-1","page":"Relaxation of Implicit Functions","title":"High-level functions","text":"","category":"section"},{"location":"McCormick/implicit/#","page":"Relaxation of Implicit Functions","title":"Relaxation of Implicit Functions","text":" implicit_relax_h!","category":"page"},{"location":"McCormick/implicit/#EAGO.McCormick.implicit_relax_h!","page":"Relaxation of Implicit Functions","title":"EAGO.McCormick.implicit_relax_h!","text":"implicitrelaxh!\n\n\n\n\n\n","category":"function"},{"location":"McCormick/implicit/#Subroutines-1","page":"Relaxation of Implicit Functions","title":"Subroutines","text":"","category":"section"},{"location":"McCormick/implicit/#","page":"Relaxation of Implicit Functions","title":"Relaxation of Implicit Functions","text":" affine_exp!\n correct_exp!\n final_cut\n gen_expansion_params!","category":"page"},{"location":"McCormick/implicit/#EAGO.McCormick.affine_exp!","page":"Relaxation of Implicit Functions","title":"EAGO.McCormick.affine_exp!","text":"affine_exp!\n\nComputates the affine relaxations of the state variable.\n\n\n\n\n\n","category":"function"},{"location":"McCormick/implicit/#EAGO.McCormick.correct_exp!","page":"Relaxation of Implicit Functions","title":"EAGO.McCormick.correct_exp!","text":"correct_exp!\n\nCorrects the relaxation of the state variable x_mc if the affine relaxation,\n\n\n\n\n\n","category":"function"},{"location":"McCormick/implicit/#EAGO.McCormick.final_cut","page":"Relaxation of Implicit Functions","title":"EAGO.McCormick.final_cut","text":"final_cut\n\nAn operator that cuts the x_mc object using the x_mc_int bounds in a differentiable or nonsmooth fashion to achieve a composite relaxation within x_mc_int.\n\n\n\n\n\n","category":"function"},{"location":"McCormick/implicit/#EAGO.McCormick.gen_expansion_params!","page":"Relaxation of Implicit Functions","title":"EAGO.McCormick.gen_expansion_params!","text":"genexpansionparams!\n\n\n\n\n\n","category":"function"},{"location":"Optimizer/optimizer/#EAGO-Optimizer-1","page":"EAGO Optimizer","title":"EAGO Optimizer","text":"","category":"section"},{"location":"Optimizer/optimizer/#","page":"EAGO Optimizer","title":"EAGO Optimizer","text":"The EAGO.Optimizer object holds all algorithm solution information. A description of all user-facing options has been provided in the docstring.","category":"page"},{"location":"Optimizer/optimizer/#EAGO.Optimizer-1","page":"EAGO Optimizer","title":"EAGO.Optimizer","text":"","category":"section"},{"location":"Optimizer/optimizer/#","page":"EAGO Optimizer","title":"EAGO Optimizer","text":"Optimizer","category":"page"},{"location":"Optimizer/optimizer/#EAGO.Optimizer","page":"EAGO Optimizer","title":"EAGO.Optimizer","text":"Optimizer\n\nThe main optimizer object used by EAGO to solve problems during the optimization routine. The following commonly used options are described below and can be set via keyword arguments in the JuMP/MOI model:\n\npresolve_scrubber_flag::Bool: Replace code in user-defined functions which may prevent method overloading on Real subtypes (default = false).\npresolve_to_JuMP_flag::Bool: Create and use DAG representations of user-defined function (default = false).\npresolve_epigraph_flag::Bool: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Apply the epigraph reformulation to the problem (default = false).\npresolve_cse_flag::Bool: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Enable common subexpression elimination for DAG (default = false).\npresolve_flatten_flag::Bool: Rerranges the DAG using registered transformations (default = false)\ncp_depth::Int64: Depth in B&B tree above which constraint propagation should be disabled (default = 1000).\ncp_repetitions::Int64: Number of repetitions of forward-reverse passes to perform in constraint propagation (default = 3).\ncp_tolerance::Float64: Disable constraint propagation if the ratio of new node volume to beginning node volume exceeds this number (default = 0.99).\ncp_interval_only::Bool: Use only valid interval bounds during constraint propagation (default = false).\nrelaxed_optimizer::S: An instance of the optimizer used to solve the relaxed subproblems (default = GLPK.Optimizer()).\nrelaxed_optimizer_kwargs::Base.Iterators.Pairs: Keyword arguments for the relaxed optimizer.\nobbt_depth::Int64: Depth in B&B tree above which OBBT should be disabled (default = 1000).\nobbt_repetitions::Int64: Number of repetitions of OBBT to perform in preprocessing (default = 3).\nobbt_aggressive_on::Bool: Turn aggresive OBBT on (default = false).\nobbt_aggressive_max_iteration::Int64: Maximum iteration to perform aggresive OBBT (default = 2)\nobbt_aggressive_min_dimension::Int64: Minimum dimension to perform aggresive OBBT (default = 2)\nobbt_tolerance::Float64: Tolerance to consider bounds equal (default = 1E-9).\nobbt_variable_values::Vector{Bool}: Variables to perform OBBT on (default: all variables in nonlinear expressions).\nlp_depth::Int64: Depth in B&B tree above which linear FBBT should be disabled (default = 1000).\nlp_repetitions::Int64: Number of repetitions of linear FBBT to perform in preprocessing (default = 3).\nquad_uni_depth::Int64: Depth in B&B tree above which univariate quadratic FBBT should be disabled (default = -1).\nquad_uni_repetitions::Int64: Number of repetitions of univariate quadratic FBBT to perform in preprocessing (default = 2).\nquad_bi_depth::Int64: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Depth in B&B tree above which bivariate quadratic FBBT should be disabled (default = -1).\nquad_bi_repetitions::Int64: Number of repetitions of bivariate quadratic FBBT to perform in preprocessing (default = 2).\nsubgrad_tighten::Bool: Perform tightening of interval bounds using subgradients at each factor in each nonlinear tape during a forward-reverse pass (default = true).\nsubgrad_tighten_reverse::Bool: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Used to enable/disable subgradient tightening of interval bounds on the reverse pass (default = true).\ncut_max_iterations::Int64\ncut_cvx::Float64: Convex coefficient used to select point for new added cuts. Branch point is given by (1-cut_cvx)*xmid + cut_cvx*xsol (default = 0.9).\ncut_tolerance::Float64: Add cut if the L1 distance from the prior cutting point to the new cutting point normalized by the box volume is greater than the tolerance (default = 0.05).\nobjective_cut_on::Bool: Adds an objective cut to the relaxed problem (default = true).\nupper_optimizer::T: Optimizer used to solve upper bounding problem (default = Ipopt.Optimizer())\nupper_factory::JuMP.OptimizerFactory: OptimizerFactory used to build optimizer that solves the upper bounding problem (default = with_optimizer(Ipopt.Optimizer, kwargs), check Optimizer constructor for kwargs used).\nupper_bounding_depth::Int64: Solve upper problem for every node with depth less than upper_bounding_depth and with a probability of (1/2)^(depth-upperboundingdepth) otherwise (default = 4).\ndbbt_depth::Int64: Depth in B&B tree above which duality-based bound tightening should be disabled (default = 1E10).\ndbbt_tolerance::Float64: New bound is considered equal to the prior bound if within dbbt_tolerance (default = 1E-9).\nbranch_cvx_factor::Float64: Convex coefficient used to select branch point. Branch point is given by branch_cvx_factor*xmid + (1-branch_cvx_factor)*xsol (default = 0.25)\nbranch_offset::Float64: Minimum distance from bound to have branch point normalized by width of dimension to branch on (default = 0.15)\nbranch_variable::Vector{Bool}: Variables to branch on (default is all nonlinear).\nbranch_max_repetitions::Int64: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Number of times repeat node processing prior to branching (default = 4).\nbranch_repetition_tol::Float64: [FUTURE FEATURE, NOT CURRENTLY IMPLEMENTED] Volume ratio tolerance required to repeat processing the current node (default = 0.9).\nrounding_mode::Symbol: Interval rounding mode to use (default = :accurate)\nnode_limit::Int64: Node limit (default = 10^7).\ntime_limit::Float64: Time limit in seconds (default = 3600).\niteration_limit::Int64: Iteration limit (default = 3000000).\nabsolute_tolerance::Float64: Absolute tolerance for terminatin (default = 1E-3).\nrelative_tolerance::Float64: Relative tolerance for terminatin (default = 1E-3).\nlocal_solve_only::Bool: Perform only a local solve of the problem (default = false).\nlog_on::Bool: Turns logging on records global bounds, node count and run time. Additional options are available for recording information specific to subproblems (default = false).\nlog_subproblem_info::Bool: Turns on logging of times and feasibility of subproblems (default = false).\nlog_interval::Int64: Log data every log_interval iterations (default = 1).\nverbosity::Int64: The amount of information that should be printed to console while solving values range from 0 - 4: 0 is silent, 1 shows iteration summary statistics only, 2-4 show varying degrees of details about calculations within each iteration (default = 1).\noutput_iterations::Int64: Display summary of iteration to console every output_iterations (default = 10).\nheader_iterations::Int64: Display header for summary to console every output_iterations (default = 100).\nenable_optimize_hook::Bool: Specifies that the optimize_hook! function should be called rather than throw the problem to the standard B&B routine (default = false).\next::Dict{Symbol, Any}: Holds additional storage needed for constructing extensions to EAGO (default = Dict{Symbol,Any}).\next_type::ExtensionType: Holds an instance of a subtype of EAGO.ExtensionType used to define new custom subroutines (default = DefaultExt()).\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/optimizer/#Internal-Storage-Structures-1","page":"EAGO Optimizer","title":"Internal Storage Structures","text":"","category":"section"},{"location":"Optimizer/optimizer/#","page":"EAGO Optimizer","title":"EAGO Optimizer","text":"VariableInfo\nExtensionType\nLog","category":"page"},{"location":"Optimizer/optimizer/#EAGO.VariableInfo","page":"EAGO Optimizer","title":"EAGO.VariableInfo","text":"VariableInfo\n\nA structure used to store information related to the bounds assigned to each variable.\n\nis_integer::Bool: Is the variable integer valued?\nlower_bound::Float64: May be -Inf even if haslowerbound == true\nhas_lower_bound::Bool: Implies lower_bound == Inf\nupper_bound::Float64: May be Inf even if hasupperbound == true\nhas_upper_bound::Bool: Implies upper_bound == Inf\nis_fixed::Bool: Implies lowerbound == upperbound and !haslowerbound and !hasupperbound.\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/optimizer/#EAGO.ExtensionType","page":"EAGO Optimizer","title":"EAGO.ExtensionType","text":"ExtensionType\n\nAn abstract type the subtypes of which are associated with functions method overloaded for for new extensions. An instance of the DefaultExt <:ExtensionType structure to the Optimizer in the ext_type field.\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/optimizer/#EAGO.Log","page":"EAGO Optimizer","title":"EAGO.Log","text":"Log\n\nA structure used to store information on the history of the solution procedure for generating convergence plots and other analysis.\n\ncurrent_lower_bound::Vector{Float64}: Storage for lower bound calculated for current node.\ncurrent_upper_bound::Vector{Float64}: Storage for upper bound calculated for current node.\npreprocessing_time::Vector{Float64}: Storage for preprocessing time of each iteration.\nlower_problem_time::Vector{Float64}: Storage for lower bounding time of each iteration.\nupper_problem_time::Vector{Float64}: Storage for upper bounding time of each iteration.\npostprocessing_time::Vector{Float64}: Storage for postprocessing time of each iteration.\npreprocessing_feas::Vector{Bool}: Storage for preprocessing feasibility of each iteration.\nlower_problem_feas::Vector{Bool}: Storage for lower bounding feasibility of each iteration.\nupper_problem_feas::Vector{Bool}: Storage for upper bounding feasibility of each iteration.\npostprocessing_feas::Vector{Bool}: Storage for postprocessing feasibility of each iteration.\nglobal_lower_bound::Vector{Float64}: Storage for best (global) lower bound at each iteration.\nglobal_upper_bound::Vector{Float64}: Storage for best (global) upper bound at each iteration.\n\n\n\n\n\n","category":"type"},{"location":"Optimizer/optimizer/#Extending-EAGO-1","page":"EAGO Optimizer","title":"Extending EAGO","text":"","category":"section"},{"location":"Optimizer/optimizer/#","page":"EAGO Optimizer","title":"EAGO Optimizer","text":"Functionality has been included that allows for extension's to EAGO's optimizer to readily be defined. This can be done in two ways first defining a new structure which is a subtype of EAGO.ExtensionType and overloading methods associated with this new structure. An instance of this new structure is provided to the EAGO.Optimizer using the ext_type keyword. This results in EAGO now dispatch to the new methods rather than the generally defined methods for the parent type. For a complete example, the reader is directed to the interval bounding example and quasiconvex example. Alternatively, the user can overload the optimize_hook! for this subtype which will entirely circumvent the default global solution routine. Additional information can be stored in the ext field of EAGO. In order to allow for compatibility between packages the user is encouraged to append their extension name to the start of each variable name (e.g. newext_newdata).","category":"page"},{"location":"McCormick/overview/#Overview-1","page":"Overview","title":"Overview","text":"","category":"section"},{"location":"McCormick/overview/#","page":"Overview","title":"Overview","text":"EAGO provides a library of McCormick relaxations in native Julia code. It supports relaxing functions using both nonsmooth McCormick relaxations (Mitsos2009), smooth McCormick relaxations (Khan2017), multi-variant McCormick relaxations (Tsoukalas2014), as well as subgradient-based interval refinement (Najman2017). For functions with arbitrarily differentiable relaxations, the differentiable can be modified by adjusting a constant value. Additionally, and nonvalidated validated interval bounds are supported via ValidatedNumerics.jl.","category":"page"},{"location":"cite/#Citing-EAGO-1","page":"Citing EAGO","title":"Citing EAGO","text":"","category":"section"},{"location":"cite/#","page":"Citing EAGO","title":"Citing EAGO","text":"A paper about the EAGO software package is currently under preparation. In the meantime, please feel free to cite the conference presentation below:","category":"page"},{"location":"cite/#","page":"Citing EAGO","title":"Citing EAGO","text":"Wilhelm, Matthew; Stuber, Matthew (October 2017) Easy Advanced Global\nOptimization (EAGO): An Open-Source Platform for Robust and Global Optimization\nin Julia. Presented at the AIChE Annual Meeting in Minneapolis, MN.","category":"page"},{"location":"Optimizer/starting/#Solving-simple-example:-an-artificial-neural-network-with-EAGO-1","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"","category":"section"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"Matthew Wilhelm Department of Chemical and Biomolecular Engineering, University of Connecticut","category":"page"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"In [1,2], a surrogate ANN model of bioreactor productivity was constructed by fitting results from computationally expensive CFD simulations. The author then optimized this surrogate model to obtain ideal processing conditions. This optimization problem is given by:","category":"page"},{"location":"Optimizer/starting/#Input-parameters-1","page":"Solving simple example: an artificial neural network with EAGO","title":"Input parameters","text":"","category":"section"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"In the first block, we input parameters values supplied in the paper for W, B, D, and X into Julia as simple array objects.","category":"page"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"using JuMP, EAGO\n\n# Box constraints for input variables\nxLBD = [0.623 0.093 0.259 6.56 1114 0.013 0.127 0.004]\nxUBD = [5.89 0.5 1.0 90 25000 0.149 0.889 0.049]\n\n# Weights associated with the hidden layer\nW = [ 0.54 -1.97 0.09 -2.14 1.01 -0.58 0.45 0.26;\n -0.81 -0.74 0.63 -1.60 -0.56 -1.05 1.23 0.93;\n -0.11 -0.38 -1.19 0.43 1.21 2.78 -0.06 0.40]\n\n# Weights associated with the output layer\nD = [-0.91 0.11 0.52]\n\n# Bias associated with the hidden layer\nB1 = [-2.698 0.012 2.926]\n\n# Bias associated with the output layer\nB2 = -0.46","category":"page"},{"location":"Optimizer/starting/#Construct-the-JuMP-model-and-optimize-1","page":"Solving simple example: an artificial neural network with EAGO","title":"Construct the JuMP model and optimize","text":"","category":"section"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"We now formulate the problem using standard JuMP[3] syntax and optimize it. Note that we are forming an NLexpression object to handle the summation term to keep the code visually simple but this could be placed directly in the JuMP expressions instead.","category":"page"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"# Model construction\nmodel = Model(with_optimizer(EAGO.Optimizer, absolute_tolerance = 0.001))\n@variable(model, xLBD[i] <= x[i=1:8] <= xUBD[i])\n@NLexpression(model, prop[i=1:3], B1[i] + sum(W[i,j]*x[i] for j in 1:8))\n@NLobjective(model, Max, B2 + sum(D[i]*(2/(1+exp(-2*prop[i]))) for i=1:3))\n\n# Solves the model\noptimize!(model)","category":"page"},{"location":"Optimizer/starting/#Retrieve-results-1","page":"Solving simple example: an artificial neural network with EAGO","title":"Retrieve results","text":"","category":"section"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"We then recover the objective value, the solution value, and termination status codes using standard JuMP syntax.","category":"page"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"# Access calculated values\nfval = JuMP.objective_value(model)\nxsol = JuMP.value.(x)\nstatus_term = JuMP.termination_status(model)\nstatus_prim = JuMP.primal_status(model)\n\nprintln(\"EAGO terminated with a status of $status_term and a result code of $status_prim\")\nprintln(\"The optimal value is: $fval, the solution found is $xsol.\")","category":"page"},{"location":"Optimizer/starting/#Reference:-1","page":"Solving simple example: an artificial neural network with EAGO","title":"Reference:","text":"","category":"section"},{"location":"Optimizer/starting/#","page":"Solving simple example: an artificial neural network with EAGO","title":"Solving simple example: an artificial neural network with EAGO","text":"J. D. Smith, A. A. Neto, S. Cremaschi, and D. W. Crunkleton, CFD-based optimization of a flooded bed algae bioreactor, Industrial & Engineering Chemistry Research, 52 (2012), pp. 7181–7188\nA. M. Schweidtmann and A. Mitsos. Global Deterministic Optimization with Artificial Neural Networks Embedded https://arxiv.org/pdf/1801.07114.pdf\nIain Dunning and Joey Huchette and Miles Lubin. JuMP: A Modeling Language for Mathematical Optimization, SIAM Review, 59 (2017), pp. 295-320.","category":"page"},{"location":"McCormick/operators/#**Currently-supported-operators**-1","page":"Currently supported operators","title":"Currently supported operators","text":"","category":"section"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"The operators currently supported are listed below. The operators with a check box have been subject to a large degree of scrutiny and have been implemented for both forward and reverse McCormick relaxations.","category":"page"},{"location":"McCormick/operators/#**Univariate-McCormick-Operators**-1","page":"Currently supported operators","title":"Univariate McCormick Operators","text":"","category":"section"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"Arbitrarily differentiable relaxations can be constructed for the following operators:","category":"page"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"[x] Inverse (inv)\n[x] Logarithms (log, log2, log10)\n[x] Exponential Functions (exp, exp2, exp10)\n[x] Square Root (sqrt)\n[x] Absolute Value (abs)","category":"page"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"Both nonsmooth and Whitney-1 (once differentiable) relaxations are supported:","category":"page"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"[x] Step Functions (step, sign)\n[x] Trignometric Functions (sin, cos, tan)\n[x] Inverse Trignometric Functions (asin, acos, atan)\n[x] Hyperbolic Functions (sinh, cosh, tanh)\n[x] Inverse Hyperbolic Functions (asinh, acosh, atanh)","category":"page"},{"location":"McCormick/operators/#**Bivariate-Operators:-McCormick-and-McCormick**-1","page":"Currently supported operators","title":"Bivariate Operators: McCormick & McCormick","text":"","category":"section"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"The following bivariant operators are supported for two MC objects. Both nonsmooth and Whitney-1 (once differentiable) relaxations are supported.","category":"page"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"[x] multiplication (*)\n[x] division (/)","category":"page"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"Arbitrarily differentiable relaxations can be constructed for the following operators:","category":"page"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"[x] addition (+)\n[x] subtraction (-)\n[x] minimization (min)\n[x] maximization (max)","category":"page"},{"location":"McCormick/operators/#**Bivariate-Operators:-McCormick-and-(Integer-or-Float)**-1","page":"Currently supported operators","title":"Bivariate Operators: McCormick & (Integer or Float)","text":"","category":"section"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"Arbitrarily differentiable relaxations can be constructed for the following operators:","category":"page"},{"location":"McCormick/operators/#","page":"Currently supported operators","title":"Currently supported operators","text":"[x] addition (+)\n[x] subtraction (-)\n[x] multiplication (*)\n[x] division (/)\n[x] minimization (min)\n[x] maximization (max)\n[x] Exponentiation (pow, ^)","category":"page"},{"location":"ref/#**References**-1","page":"References","title":"References","text":"","category":"section"},{"location":"ref/#*Branch-and-Bound*-1","page":"References","title":"Branch and Bound","text":"","category":"section"},{"location":"ref/#","page":"References","title":"References","text":"Floudas, Christodoulos A. Deterministic global optimization: theory, methods and applications. Vol. 37. Springer Science & Business Media, 2013.\nHorst, Reiner, and Hoang Tuy. Global optimization: Deterministic approaches. Springer Science & Business Media, 2013.","category":"page"},{"location":"ref/#*Parametric-Interval-Techniques*-1","page":"References","title":"Parametric Interval Techniques","text":"","category":"section"},{"location":"ref/#","page":"References","title":"References","text":"E. R. Hansen and G. W. Walster. Global Optimization Using Interval Analysis. Marcel Dekker, New York, second edition, 2004.\nR. Krawczyk. Newton-algorithmen zur bestimmung con nullstellen mit fehler-schranken. Computing, 4:187–201, 1969.\nR. Krawczyk. Interval iterations for including a set of solutions. Computing, 32:13–31, 1984.\nC. Miranda. Un’osservatione su un teorema di brower. Boll. Un. Mat. Ital., 3:5–7, 1940.\nA. Neumaier. Interval Methods for Systems of Equations. Cambridge University Press, Cambridge, 1990.\nR. E. Moore. A test for existence of solutions to nonlinear systems. SIAM Journal on Numerical Analysis, 14(4):611–615, 1977.","category":"page"},{"location":"ref/#*Domain-Reduction*-1","page":"References","title":"Domain Reduction","text":"","category":"section"},{"location":"ref/#","page":"References","title":"References","text":"Benhamou, F., & Older, W.J. (1997). Applying interval arithmetic to real, integer, and boolean constraints. The Journal of Logic Programming, 32, 1–24.\nCaprara, A., & Locatelli, M. (2010). Global optimization problems and domain reduction strategies. Mathematical Programming, 125, 123–137.\nGleixner, A.M., Berthold, T., Müller, B., & Weltge, S. (2016). Three enhancements for optimization-based bound tightening. ZIB Report, 15–16.\nRyoo, H.S., & Sahinidis, N.V. (1996). A branch-and-reduce approach to global optimization. Journal of Global Optimization, 8, 107–139.\nSchichl, H., & Neumaier, A. (2005). Interval analysis on directed acyclic graphs for global optimization. Journal of Global Optimization, 33, 541–562.\nTawarmalani, M., & Sahinidis, N.V. (2005). A polyhedral branch-and-cut approach to global optimization. Mathematical Programming, 103, 225–249.\nVu, X., Schichl, H., & Sam-Haroud, D. (2009). Interval propagation and search on directed acyclic graphs for numerical constraint solving. Journal of Global Optimization, 45, 499–531.","category":"page"},{"location":"ref/#*Generalized-McCormick-Relaxations*-1","page":"References","title":"Generalized McCormick Relaxations","text":"","category":"section"},{"location":"ref/#","page":"References","title":"References","text":"Chachuat, B.: MC++: a toolkit for bounding factorable functions, v1.0. Retrieved 2 July 2014 https://projects.coin-or.org/MCpp (2014)\nA. Mitsos, B. Chachuat, and P. I. Barton. McCormick-based relaxations of algorithms. SIAM Journal on Optimization, 20(2):573–601, 2009.\nG. P. McCormick. Computability of global solutions to factorable nonconvex programs: Part I-Convex underestimating problems. Mathematical Programming, 10:147–175, 1976.\nG. P. McCormick. Nonlinear programming: Theory, Algorithms, and Applications. Wiley, New York, 1983.\nJ. K. Scott, M. D. Stuber, and P. I. Barton. Generalized McCormick relaxations. Journal of Global Optimization, 51(4):569–606, 2011.\nStuber, M.D., Scott, J.K., Barton, P.I.: Convex and concave relaxations of implicit functions. Optim. Methods Softw. 30(3), 424–460 (2015)\nA. Tsoukalas and A. Mitsos. Multivariate McCormick Relaxations. Journal of Global Optimization, 59:633–662, 2014.\nK.A. Khan, HAJ Watson, P.I. Barton. Differentiable McCormick relaxations. Journal of Global Optimization, 67(4):687-729 (2017).\nA., Wechsung JK Scott, HAJ Watson, and PI Barton. Reverse propagation of McCormick relaxations. Journal of Global Optimization 63(1):1-36 (2015).","category":"page"},{"location":"ref/#*Semi-Infinite-Programming*-1","page":"References","title":"Semi-Infinite Programming","text":"","category":"section"},{"location":"ref/#","page":"References","title":"References","text":"A. Mitsos. Global optimization of semi-infinite programs via restriction of the right-hand side. Optimization, 60(10-11):1291-1308, 2009.\nStuber, M.D. and Barton, P. I. Semi-Infinite Optimization With Implicit Functions. Industrial & Engineering Chemistry Research, 54:307-317, 2015.","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"(Image: full_Logo)","category":"page"},{"location":"#**EAGO-Easy-Advanced-Global-Optimization-in-Julia**-1","page":"Introduction","title":"EAGO - Easy Advanced Global Optimization in Julia","text":"","category":"section"},{"location":"#","page":"Introduction","title":"Introduction","text":"A flexible-framework for global and robust optimization in Julia","category":"page"},{"location":"#Authors-1","page":"Introduction","title":"Authors","text":"","category":"section"},{"location":"#","page":"Introduction","title":"Introduction","text":"Matthew Wilhelm, Department of Chemical and Biomolecular Engineering, University of Connecticut (UCONN)","category":"page"},{"location":"#Overview-1","page":"Introduction","title":"Overview","text":"","category":"section"},{"location":"#","page":"Introduction","title":"Introduction","text":"EAGO is a global and robust optimization platform based on McCormick relaxations. It contains the first widely accessible global optimization routine based on generalized McCormick relaxations. With the exception of calls to local solvers and linear algebra routines, EAGO is written entirely in native Julia. The solver is quite flexibly arranged so the end user can easily customize low-level routines.","category":"page"},{"location":"#Installing-EAGO-1","page":"Introduction","title":"Installing EAGO","text":"","category":"section"},{"location":"#","page":"Introduction","title":"Introduction","text":"EAGO is registered Julia package. It can be installed using the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run the following command","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"pkg> add EAGO","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"Currently, EAGO is tied to a 0.19 or greater version of JuMP. This allows a replication of some of the internal features shared by EAGO and JuMP's AD scheme aka generation of Wergert Tapes pass evaluators between JuMP and EAGO etc.","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"pkg> add JuMP","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"Once JuMP 0.19+ is registered EAGO will be updated to eliminate the need for this.","category":"page"},{"location":"#Examples-1","page":"Introduction","title":"Examples","text":"","category":"section"},{"location":"#","page":"Introduction","title":"Introduction","text":"A few examples are provided in the documentation website. More involved examples are provided at in the form of Jupyter Notebooks at EAGO-notebooks and can be run using IJulia. To add IJulia","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"pkg> add IJulia","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"Then launch the Jupyter notebook using the following command from the Julia terminal,","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"julia> using IJulia; notebook()","category":"page"},{"location":"#","page":"Introduction","title":"Introduction","text":"Then simply navigate to the example directory and run the example of most interest.","category":"page"}] -} diff --git a/docs/make.jl b/docs/make.jl index 8f870810..8c167888 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,6 +1,6 @@ push!(LOAD_PATH,"../src/") -using Documenter +using Documenter, DocumenterTools using EAGO, IntervalArithmetic, MathOptInterface, McCormick import McCormick: final_cut, mid3v, precond_and_contract!, AbstractMCCallback, populate_affine!, @@ -15,10 +15,15 @@ import EAGO.Script: dag_flattening!, register_substitution!, Template_Graph, const MOI = MathOptInterface +@info "Making documentation..." makedocs(modules = [EAGO, McCormick], doctest = false, - format = Documenter.HTML(), - authors = "Matthew Wilhelm", + format = Documenter.HTML( + prettyurls = get(ENV, "CI", nothing) == "true", + canonical = "https://PSORLab.github.io/EAGO.jl/stable/", + collapselevel = 1, + ), + authors = "Matthew E. Wilhelm", #repo = "https://github.com/PSORLab/EAGO.jl/blob/{commit}{path}#L{line}", sitename = "EAGO.jl: Easy Advanced Global Optimization", pages = Any["Introduction" => "index.md", @@ -44,4 +49,6 @@ makedocs(modules = [EAGO, McCormick], "Citing EAGO" => "cite.md"] ) -deploydocs(; repo = "github.com/PSORLab/EAGO.jl", push_preview = true) +@info "Deploying documentation..." +deploydocs(repo = "github.com/PSORLab/EAGO.jl.git", + push_preview = true) diff --git a/docs/src/SemiInfinite/semiinfinite.md b/docs/src/SemiInfinite/semiinfinite.md index a88fe987..32ec54db 100644 --- a/docs/src/SemiInfinite/semiinfinite.md +++ b/docs/src/SemiInfinite/semiinfinite.md @@ -9,7 +9,7 @@ Semi-infinite programming remains an active area of research. In general, the so ![SipProbForm](SIPProbFormulation.png) -EAGO implements the SIPres of [1] to determine a globally optimal solution to problems of the above form. This accomplished using the `explicit_sip_solve` function which returns the optimal value, the solution, and a boolean feasibility value. To illustrate the functions use, a simple example is presented here which solves the below problem: +EAGO implements three different algorithm detailed in [1,2] to determine a globally optimal solution to problems of the above form. This accomplished using the `sip_solve` function which returns the optimal value, the solution, and a boolean feasibility value. To illustrate the functions use, a simple example is presented here which solves the below problem: ![SipForm](SIPformulation.png) @@ -20,22 +20,32 @@ using EAGO, JuMP f(x) = (1/3)*x[1]^2 + x[2]^2 + x[1]/2 gSIP(x,p) = (1.0 - (x[1]^2)*(p[1]^2))^2 - x[1]*p[1]^2 - x[2]^2 + x[2] -x_l = [-1000.0, -1000.0] -x_u = [1000.0, 1000.0] -p_l = [0.0] -p_u = [1.0] +x_l = Float64[-1000.0, -1000.0] +x_u = Float64[1000.0, 1000.0] +p_l = Float64[0.0] +p_u = Float64[1.0] -# Solve the SIP problem -sip_result = explicit_sip_solve(x_l, x_u, p_l, p_u, f, gSIP) +sip_result = sip_solve(SIPRes(), x_l, x_u, p_l, p_u, f, Any[gSIP], abs_tolerance = 1E-3) println("The global minimum of the semi-infinite program is between: $(sip_result.lower_bound) and $(sip_result.upper_bound).") println("The global minimum is attained at: x = $(sip_result.xsol).") -println("Is the problem feasible? (sip_result.feasibility).") +println("Is the problem feasible? $(sip_result.feasibility).") ``` ## Semi-infinite solver ```@docs - explicit_sip_solve SIPProblem SIPResult + SIPRes + SIPResRev + SIPHybrid + get_sip_optimizer + build_model + sip_llp! + sip_bnd! + sip_res! + sip_solve ``` + +1. **Mitsos A (2009).** Global optimization of semi-infinite programs via restriction of the right-hand side. *Optimization*, 60(10-11):1291-1308. +2. **Djelassi, Hatim, and Alexander Mitsos.** A hybrid discretization algorithm with guaranteed feasibility for the global solution of semi-infinite programs. *Journal of Global Optimization*, 68.2 (2017): 227-253 should be used. diff --git a/src/EAGO.jl b/src/EAGO.jl index 1aa1fd3d..3a80fc78 100644 --- a/src/EAGO.jl +++ b/src/EAGO.jl @@ -131,6 +131,11 @@ module EAGO include("eago_script/script.jl") # routines for solving SIPs - export SIP_Options, SIP_Result, explicit_sip_solve - include("eago_semiinfinite/semi_infinite.jl") + export SIPResult, SIPProblem, SIPCallback, SIPSubResult, + sip_solve, SIPRes, SIPResRev, SIPHybrid, + build_model, set_tolerance_inner!, set_tolerance!, get_disc_set, + sip_llp!, sip_bnd!, sip_res!, get_sip_optimizer, check_convergence, + LowerLevel1, LowerLevel2, LowerLevel3, LowerProblem, UpperProblem, + ResProblem, AbstractSIPAlgo, AbstractSubproblemType + include("eago_semiinfinite/semiinfinite.jl") end diff --git a/src/eago_optimizer/functions/nonlinear/forward_pass.jl b/src/eago_optimizer/functions/nonlinear/forward_pass.jl index 8f31c45d..52a994d3 100644 --- a/src/eago_optimizer/functions/nonlinear/forward_pass.jl +++ b/src/eago_optimizer/functions/nonlinear/forward_pass.jl @@ -483,12 +483,12 @@ function forward_power!(k::Int64, children_arr::Vector{Int64}, children_idx::Uni num2 = 0.0 end - # is output a number (by closure of the reals)? + # is output a number (by closure of the reals) output_is_number = arg1_is_number && arg2_is_number numvalued[k] = output_is_number # x^1 = x - if num2 === 1.0 + if arg2_is_number && (num2 == 1.0) if arg1_is_number numberstorage[k] = num1 else @@ -497,7 +497,7 @@ function forward_power!(k::Int64, children_arr::Vector{Int64}, children_idx::Uni return nothing # x^0 = 1 - elseif num2 === 0.0 + elseif arg2_is_number && (num2 == 0.0) if arg1_is_number numberstorage[k] = 1.0 else diff --git a/src/eago_optimizer/functions/nonlinear/nonlinear.jl b/src/eago_optimizer/functions/nonlinear/nonlinear.jl index e10582f4..cee31acc 100644 --- a/src/eago_optimizer/functions/nonlinear/nonlinear.jl +++ b/src/eago_optimizer/functions/nonlinear/nonlinear.jl @@ -319,7 +319,7 @@ end ### Defines evaluator storage structure ### """ -$(TYPEDEF) + Evaluator MOI.AbstractNLPEvaluator for calculating relaxations of nonlinear terms. diff --git a/src/eago_optimizer/optimize/optimize_lp_cone.jl b/src/eago_optimizer/optimize/optimize_lp_cone.jl index c9e63e92..29dceb7a 100644 --- a/src/eago_optimizer/optimize/optimize_lp_cone.jl +++ b/src/eago_optimizer/optimize/optimize_lp_cone.jl @@ -61,7 +61,8 @@ function add_linear_constraints!(m::Optimizer, opt::T) where T for (func, set) in m._input_problem._linear_eq_constraints MOI.add_constraint(opt, func, set) end - nothing + + return nothing end ### LP and MILP routines @@ -71,7 +72,7 @@ function add_soc_constraints!(m::Optimizer, opt::T) where T MOI.add_constraint(opt, func, set) end - nothing + return nothing end function add_sv_or_aff_obj!(m::Optimizer, opt::T) where T diff --git a/src/eago_optimizer/optimize/optimize_nonconvex.jl b/src/eago_optimizer/optimize/optimize_nonconvex.jl index 3957fccd..1acd563f 100644 --- a/src/eago_optimizer/optimize/optimize_nonconvex.jl +++ b/src/eago_optimizer/optimize/optimize_nonconvex.jl @@ -49,7 +49,7 @@ function create_initial_node!(m::Optimizer) branch_count = 1 for i = 1:m._working_problem._variable_count - vi = variable_info[i] + vi = variable_info[i] if vi.branch_on === BRANCH lower_bound[branch_count] = vi.lower_bound upper_bound[branch_count] = vi.upper_bound @@ -464,7 +464,7 @@ function is_globally_optimal(t::MOI.TerminationStatusCode, r::MOI.ResultStatusCo feasible = false valid_result = false - if (t === MOI.INFEASIBLE && r == MOI.INFEASIBILITY_CERTIFICATE) + if (t === MOI.INFEASIBLE && r === MOI.INFEASIBILITY_CERTIFICATE) valid_result = true elseif (t === MOI.INFEASIBLE && r === MOI.NO_SOLUTION) @@ -529,12 +529,12 @@ function set_dual!(m::Optimizer) relaxed_variable_gt = m._relaxed_variable_gt for i = 1:m._working_problem._var_leq_count - ci_lt, i_lt = relaxed_variable_lt[i] - m._lower_uvd[i_lt] = MOI.get(relaxed_optimizer, MOI.ConstraintDual(), ci_lt) + ci_lt, i_lt = @inbounds relaxed_variable_lt[i] + @inbounds m._lower_uvd[i_lt] = MOI.get(relaxed_optimizer, MOI.ConstraintDual(), ci_lt) end for i = 1:m._working_problem._var_geq_count - ci_gt, i_gt = relaxed_variable_gt[i] - m._lower_lvd[i_gt] = MOI.get(relaxed_optimizer, MOI.ConstraintDual(), ci_gt) + ci_gt, i_gt = @inbounds relaxed_variable_gt[i] + @inbounds m._lower_lvd[i_gt] = MOI.get(relaxed_optimizer, MOI.ConstraintDual(), ci_gt) end return nothing diff --git a/src/eago_optimizer/optimizer.jl b/src/eago_optimizer/optimizer.jl index ed5badf2..bec18a9a 100644 --- a/src/eago_optimizer/optimizer.jl +++ b/src/eago_optimizer/optimizer.jl @@ -25,6 +25,7 @@ MOIU.map_indices(::Function, x::DefaultExt) = x @enum(ObjectiveType, UNSET, SINGLE_VARIABLE, SCALAR_AFFINE, SCALAR_QUADRATIC, NONLINEAR) @enum(ProblemType, UNCLASSIFIED, LP, MILP, SOCP, MISOCP, DIFF_CVX, MINCVX) +export EAGOParameters """ $(TYPEDEF) diff --git a/src/eago_optimizer/subsolver_config/config.jl b/src/eago_optimizer/subsolver_config/config.jl new file mode 100644 index 00000000..c38c1044 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config.jl @@ -0,0 +1,63 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config.jl +# Contains subroutines used to set default configuration for select supported +# solvers along with routines needed to adjust tolerances to mirror tolerance +# adjustments in the global solve. +############################################################################# + +function set_default_config_udf!(ext::ExtensionType, m::MOI.AbstractOptimizer) end + +include("config/cbc.jl") +include("config/clp.jl") +include("config/cosmo.jl") +include("config/cplex.jl") +include("config/ecos.jl") +include("config/glpk.jl") +include("config/gurobi.jl") +include("config/ipopt.jl") +include("config/knitro.jl") +include("config/mosek.jl") +include("config/scs.jl") +include("config/tulip.jl") + +function set_default_config!(ext::DefaultExt, m::T) where {T <: MOI.AbstractOptimizer} + solver_name = MOI.get(m, MOI.SolverName()) + if solver_name == "Ipopt" + set_default_config!(Val{:ipopt}(), ext, m) + elseif solver_name == "GLPK" + set_default_config!(Val{:glpk}(), ext, m) + elseif solver_name == "CPLEX" + set_default_config!(Val{:cplex}(), ext, m) + elseif solver_name == "Clp" + set_default_config!(Val{:clp}(), ext, m) + elseif solver_name == "COIN Branch-and-Cut (Cbc)" + set_default_config!(Val{:cbc}(), ext, m) + elseif solver_name == "SCS" + set_default_config!(Val{:scs}(), ext, m) + elseif solver_name == "Mosek" + set_default_config!(Val{:mosek}(), ext, m) + elseif solver_name == "ECOS" + set_default_config!(Val{:ecos}(), ext, m) + elseif solver_name == "COSMO" + set_default_config!(Val{:cosmo}(), ext, m) + elseif solver_name == "Tulip" + set_default_config!(Val{:tulip}(), ext, m) + elseif solver_name == "Gurobi" + set_default_config!(Val{:gurobi}(), ext, m) + elseif solver_name == "Knitro" + set_default_config!(Val{:knitro}(), ext, m) + else + set_default_config_udf!(ext, m) + end + return nothing +end + +function set_default_config!(ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + set_default_config!(DefaultExt(), m::T) +end diff --git a/src/eago_optimizer/subsolver_config/config/cbc.jl b/src/eago_optimizer/subsolver_config/config/cbc.jl new file mode 100644 index 00000000..c35d5e3a --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/cbc.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/cbc.jl +# Configuration adjustment subroutines for Cbc. +############################################################################# + +function set_default_config!(::Val{:cbc}, ext::ExtensionType, m::T) where T <: MOI.AbstractOptimizer + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/clp.jl b/src/eago_optimizer/subsolver_config/config/clp.jl new file mode 100644 index 00000000..cea18438 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/clp.jl @@ -0,0 +1,25 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/clp.jl +# Configuration adjustment subroutines for Clp. +############################################################################# + +function set_default_config!(::Val{:clp}, ext::ExtensionType, m::T) where T <: MOI.AbstractOptimizer + + MOI.set(m, MOI.RawParameter("PrimalTolerance"), 1E-7) + MOI.set(m, MOI.RawParameter("DualTolerance"), 1E-7) + MOI.set(m, MOI.RawParameter("DualObjectiveLimit"), 1e308) + MOI.set(m, MOI.RawParameter("MaximumIterations"), 2147483647) + MOI.set(m, MOI.RawParameter("PresolveType"), 0) + MOI.set(m, MOI.RawParameter("SolveType"), 5) + MOI.set(m, MOI.RawParameter("InfeasibleReturn"), 1) + MOI.set(m, MOI.RawParameter("Scaling"), 3) + MOI.set(m, MOI.RawParameter("Perturbation"), 100) + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/cosmo.jl b/src/eago_optimizer/subsolver_config/config/cosmo.jl new file mode 100644 index 00000000..72afc518 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/cosmo.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/cosmo.jl +# Configuration adjustment subroutines for COSMO. +############################################################################# + +function set_default_config!(::Val{:cosmo}, ext::ExtensionType, m::T) where T <: MOI.AbstractOptimizer + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/cplex.jl b/src/eago_optimizer/subsolver_config/config/cplex.jl new file mode 100644 index 00000000..fecdb7a0 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/cplex.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/cplex.jl +# Configuration adjustment subroutines for CPLEX. +############################################################################# + +function set_default_config!(::Val{:cplex}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/ecos.jl b/src/eago_optimizer/subsolver_config/config/ecos.jl new file mode 100644 index 00000000..2c41ed86 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/ecos.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/ecos.jl +# Configuration adjustment subroutines for ECOS. +############################################################################# + +function set_default_config!(::Val{:ecos}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/glpk.jl b/src/eago_optimizer/subsolver_config/config/glpk.jl new file mode 100644 index 00000000..93a1f721 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/glpk.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/glpk.jl +# Configuration adjustment subroutines for GLPK. +############################################################################# + +function set_default_config!(::Val{:glpk}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/gurobi.jl b/src/eago_optimizer/subsolver_config/config/gurobi.jl new file mode 100644 index 00000000..0bb15ed9 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/gurobi.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/gurobi.jl +# Configuration adjustment subroutines for Gurobi. +############################################################################# + +function set_default_config!(::Val{:gurobi}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/ipopt.jl b/src/eago_optimizer/subsolver_config/config/ipopt.jl new file mode 100644 index 00000000..5eafcc27 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/ipopt.jl @@ -0,0 +1,24 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/ipopt.jl +# Configuration adjustment subroutines for Ipopt. +############################################################################# + +function set_default_config!(::Val{:ipopt}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + MOI.set(m, MOI.RawParameter("max_iter"),3000) + MOI.set(m, MOI.RawParameter("acceptable_tol"), 1E30) + MOI.set(m, MOI.RawParameter("acceptable_iter"), 300) + MOI.set(m, MOI.RawParameter("constr_viol_tol"), 0.000001) + MOI.set(m, MOI.RawParameter("acceptable_compl_inf_tol"), 0.000001) + MOI.set(m, MOI.RawParameter("acceptable_dual_inf_tol"), 1.0) + MOI.set(m, MOI.RawParameter("acceptable_constr_viol_tol"), 0.000001) + MOI.set(m, MOI.RawParameter("print_level"), 0) + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/knitro.jl b/src/eago_optimizer/subsolver_config/config/knitro.jl new file mode 100644 index 00000000..707853d9 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/knitro.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/knitro.jl +# Configuration adjustment subroutines for KNITRO. +############################################################################# + +function set_default_config!(::Val{:knitro}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/mosek.jl b/src/eago_optimizer/subsolver_config/config/mosek.jl new file mode 100644 index 00000000..7da44732 --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/mosek.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/mosek.jl +# Configuration adjustment subroutines for Mosek. +############################################################################# + +function set_default_config!(::Val{:mosek}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/scs.jl b/src/eago_optimizer/subsolver_config/config/scs.jl new file mode 100644 index 00000000..c557d16a --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/scs.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/scs.jl +# Configuration adjustment subroutines for SCS. +############################################################################# + +function set_default_config!(::Val{:scs}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_optimizer/subsolver_config/config/tulip.jl b/src/eago_optimizer/subsolver_config/config/tulip.jl new file mode 100644 index 00000000..0d3bccca --- /dev/null +++ b/src/eago_optimizer/subsolver_config/config/tulip.jl @@ -0,0 +1,15 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_optimizer/subsolver_config/config/tulip.jl +# Configuration adjustment subroutines for Tulip. +############################################################################# + +function set_default_config!(::Val{:tulip}, ext::ExtensionType, m::T) where {T <: MOI.AbstractOptimizer} + + return nothing +end diff --git a/src/eago_semiinfinite/nonconvex_algorithms/sip_hybrid.jl b/src/eago_semiinfinite/nonconvex_algorithms/sip_hybrid.jl new file mode 100644 index 00000000..478a998a --- /dev/null +++ b/src/eago_semiinfinite/nonconvex_algorithms/sip_hybrid.jl @@ -0,0 +1,167 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_semiinfinite/algorithms/sip_hybrid.jl +# FUTURE FEATURE... NOT CURRENTLY FUNCTIONAL +# Defines the SIP-hybrid algorithm which implements Algorithm #2 of Djelassi, +# Hatim, and Alexander Mitsos. "A hybrid discretization algorithm with guaranteed +# feasibility for the global solution of semi-infinite programs." +# Journal of Global Optimization 68.2 (2017): 227-253. +############################################################################# + +""" + SIPHybrid + +Specifies that the SIPHybrid algorithm which implements Algorithm #2 of Djelassi, +Hatim, and Alexander Mitsos. "A hybrid discretization algorithm with guaranteed +feasibility for the global solution of semi-infinite programs." Journal of Global +Optimization 68.2 (2017): 227-253 should be used. +""" +struct SIPHybrid <: AbstractSIPAlgo end + +function set_tolerance!(t::DefaultExt, alg::SIPHybrid, s::LowerLevel1, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.eps_l[i]) +end +function set_tolerance!(t::DefaultExt, alg::SIPHybrid, s::LowerLevel2, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.eps_u[i]) +end +function set_tolerance!(t::DefaultExt, alg::SIPHybrid, s::LowerProblem, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.lbd.tol) +end +function set_tolerance!(t::DefaultExt, alg::SIPHybrid, s::UpperProblem, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.ubd.tol) +end + +function get_disc_set(t::ExtensionType, alg::SIPHybrid, s::S, sr::SIPSubResult, + i::Int) where S <: Union{LowerProblem,UpperProblem,ResProblem} + sr.disc_l[i] +end + +function sip_solve!(t::ExtensionType, alg::SIPHybrid, buffer::SIPSubResult, prob::SIPProblem, + result::SIPResult, cb::SIPCallback) + + verb = prob.verbosity + + # begin main solution loop + @label main_iteration + + # solve lower bounding problem and check feasibility + sip_bnd!(t, alg, LowerProblem(), buffer, result, prob, cb) + result.lower_bound = buffer.lbd.obj_val + if !buffer.lbd.feas + result.feasibility = false + println("Terminated: lower bounding problem infeasible.") + @goto main_end + end + print_summary!(LowerProblem(), verb, buffer) + + # solve inner program and update lower discretization set + is_llp1_nonpositive = true + for i = 1:prob.nSIP + sip_llp!(t, alg, LowerLevel1(), result, buffer, prob, cb, i) + buffer.disc_l_buffer .= buffer.llp1.sol + print_summary!(LowerLevel1(), verb, buffer, i) + if buffer.llp1.obj_bnd <= 0.0 + continue + elseif buffer.llp1.obj_val > 0.0 + push!(buffer.disc_l[i], deepcopy(buffer.disc_l_buffer)) + is_llp1_nonpositive = false + else + buffer.eps_l[i] = (buffer.llp1.obj_bnd - buffer.llp1.obj_val)/buffer.r_l + is_llp1_nonpositive = false + end + end + + # if the lower problem is feasible then it's solution is the optimal value + if is_llp1_nonpositive + result.upper_bound = buffer.lbd.obj_val + result.xsol .= buffer.lbd.sol + result.feasibility = true + @goto main_end + end + + + # solve upper bounding problem, if feasible solve lower level problem, + # and potentially update upper discretization set + @label upper_problem + sip_bnd!(t, alg, UpperProblem(), buffer, result, prob, cb) + print_summary!(UpperProblem(), verb, buffer) + if buffer.ubd.feas + is_llp2_nonpositive = true + for i = 1:prob.nSIP + sip_llp!(t, alg, LowerLevel2(), result, buffer, prob, cb, i) + buffer.disc_l_buffer .= buffer.llp2.sol + print_summary!(LowerLevel2(), verb, buffer, i) + if buffer.llp2.obj_bnd <= 0.0 + buffer.eps_g[i] /= buffer.r_g + continue + else + push!(buffer.disc_l[i], deepcopy(buffer.disc_l_buffer)) + is_llp2_nonpositive = false + end + end + if is_llp2_nonpositive + if buffer.ubd.obj_val <= result.upper_bound + result.upper_bound = buffer.ubd.obj_val + result.xsol .= buffer.ubd.sol + end + end + else + buffer.eps_g ./= buffer.r_g + end + check_convergence(result, prob.abs_tolerance, verb) && @goto main_end + + # solve restriction problem updating lower and upper bound as appropriate + @label res_problem + sip_res!(t, alg, buffer, result, prob, cb) + if buffer.res.obj_bnd < 0 + result.lower_bound = buffer.res.obj_val + buffer.res.obj_val = 0.5*(result.upper_bound + result.lower_bound) + result.res_iteration_number += 1 + @goto res_problem + elseif buffer.res.obj_val > 0 + is_llp3_nonpositive = false + for i = 1:prob.nSIP + sip_llp!(t, alg, LowerLevel3(), result, buffer, prob, cb, i) + buffer.disc_l_buffer .= buffer.llp3.sol + print_summary!(LowerLevel3(), verb, buffer, i) + if buffer.llp3.obj_bnd <= 0.0 + if buffer.res.obj_bnd/buffer.r_g < buffer.eps_g[i] + buffer.eps_g[i] = buffer.res.obj_bnd/buffer.r_g + end + elseif (buffer.llp3.obj_bnd > 0.0) && + (result.res_iteration_number < prob.res_iteration_limit) + is_llp3_nonpositive = false + push!(buffer.disc_l[i], deepcopy(buffer.disc_l_buffer)) + result.res_iteration_number += 1 + @goto res_problem + else + result.res_iteration_number = 1 + @goto main_iteration + end + end + if is_llp3_nonpositive + if buffer.res.obj_val <= result.upper_bound + result.upper_bound = buffer.res.obj_val + result.xsol = buffer.res.sol + result.res_iteration_number = 1 + @goto upper_problem + end + end + else + result.res_iteration_number = 1 + @goto main_iteration + end + + # print iteration information and advance + print_int!(verb, prob, result, buffer.r_g) + result.iteration_number += 1 + result.iteration_number < prob.iteration_limit && @goto main_iteration + + @label main_end + return nothing +end diff --git a/src/eago_semiinfinite/nonconvex_algorithms/sip_res.jl b/src/eago_semiinfinite/nonconvex_algorithms/sip_res.jl new file mode 100644 index 00000000..bd5715f8 --- /dev/null +++ b/src/eago_semiinfinite/nonconvex_algorithms/sip_res.jl @@ -0,0 +1,107 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_semiinfinite/algorithms/sip_hybrid.jl +# Defines the SIP-res algorithm which implements Algorithm #1 of XXX. +############################################################################# + +""" + SIPRes + +Specifies that the SIPRes algorithm which implements Algorithm #1 of Djelassi, +Hatim, and Alexander Mitsos. "A hybrid discretization algorithm with guaranteed +feasibility for the global solution of semi-infinite programs." Journal of Global +Optimization 68.2 (2017): 227-253 should be used. +""" +struct SIPRes <: AbstractSIPAlgo end + +get_sip_optimizer(t::DefaultExt, alg::SIPRes, s::S) where S <: AbstractSubproblemType = EAGO.Optimizer + +function get_disc_set(t::ExtensionType, alg::SIPRes, s::LowerProblem, sr::SIPSubResult, i::Int) + sr.disc_l[i] +end +function get_disc_set(t::ExtensionType, alg::SIPRes, s::UpperProblem, sr::SIPSubResult, i::Int) + sr.disc_u[i] +end + +function sip_solve!(t::ExtensionType, alg::SIPRes, buffer::SIPSubResult, prob::SIPProblem, + result::SIPResult, cb::SIPCallback) + + verb = prob.verbosity + + # initializes solution + @label main_iteration + check_convergence(result, prob.abs_tolerance, verb) && @goto main_end + + # solve lower bounding problem and check feasibility + sip_bnd!(t, alg, LowerProblem(), buffer, result, prob, cb) + result.lower_bound = buffer.lbd.obj_val + if !buffer.lbd.feas + result.feasibility = false + println("Terminated: lower bounding problem infeasible.") + @goto main_end + end + print_summary!(LowerProblem(), verb, buffer) + + # solve inner program and update lower discretization set + is_llp1_nonpositive = true + for i = 1:prob.nSIP + sip_llp!(t, alg, LowerLevel1(), result, buffer, prob, cb, i) + buffer.disc_l_buffer .= buffer.llp1.sol + print_summary!(LowerLevel1(), verb, buffer, i) + if buffer.llp1.obj_val <= 0.0 + continue + else + push!(buffer.disc_l[i], deepcopy(buffer.disc_l_buffer)) + is_llp1_nonpositive = false + end + end + + # if the lower problem is feasible then it's solution is the optimal value + if is_llp1_nonpositive + result.upper_bound = buffer.lbd.obj_val + result.xsol .= buffer.lbd.sol + result.feasibility = true + @goto main_end + end + + # solve upper bounding problem, if feasible solve lower level problem, + # and potentially update upper discretization set + sip_bnd!(t, alg, UpperProblem(), buffer, result, prob, cb) + print_summary!(UpperProblem(), verb, buffer) + if buffer.ubd.feas + is_llp2_nonpositive = true + for i = 1:prob.nSIP + sip_llp!(t, alg, LowerLevel2(), result, buffer, prob, cb, i) + buffer.disc_u_buffer .= buffer.llp2.sol + print_summary!(LowerLevel2(), verb, buffer, i) + if buffer.llp2.obj_val <= 0.0 + buffer.eps_g[i] /= buffer.r_g + continue + else + push!(buffer.disc_u[i], deepcopy(buffer.disc_u_buffer)) + is_llp2_nonpositive = false + end + end + if is_llp2_nonpositive + if buffer.ubd.obj_val <= result.upper_bound + result.upper_bound = buffer.ubd.obj_val + result.xsol .= buffer.ubd.sol + end + end + else + buffer.eps_g ./= buffer.r_g + end + + # print iteration information and advance + print_int!(verb, prob, result, buffer.r_g) + result.iteration_number += 1 + result.iteration_number < prob.iteration_limit && @goto main_iteration + + @label main_end + return nothing +end diff --git a/src/eago_semiinfinite/nonconvex_algorithms/sip_res_rev.jl b/src/eago_semiinfinite/nonconvex_algorithms/sip_res_rev.jl new file mode 100644 index 00000000..ceac5a7e --- /dev/null +++ b/src/eago_semiinfinite/nonconvex_algorithms/sip_res_rev.jl @@ -0,0 +1,124 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_semiinfinite/algorithms/sip_res_rev.jl +# Defines the revised SIP-res algorithm which implements Algorithm #1 of Djelassi, +# Hatim, and Alexander Mitsos. "A hybrid discretization algorithm with guaranteed +# feasibility for the global solution of semi-infinite programs." +# Journal of Global Optimization 68.2 (2017): 227-253. +############################################################################# + +""" + SIPResRev + +Specifies that the SIPResRev algorithm which implements Algorithm #1 of Djelassi, +Hatim, and Alexander Mitsos. "A hybrid discretization algorithm with guaranteed +feasibility for the global solution of semi-infinite programs." Journal of Global +Optimization 68.2 (2017): 227-253 should be used. +""" +struct SIPResRev <: AbstractSIPAlgo end + +function set_tolerance!(t::DefaultExt, alg::SIPResRev, s::LowerLevel1, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.eps_l[i]) +end +function set_tolerance!(t::DefaultExt, alg::SIPResRev, s::LowerLevel2, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.eps_u[i]) +end +function set_tolerance!(t::DefaultExt, alg::SIPResRev, s::LowerProblem, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.lbd.tol) +end +function set_tolerance!(t::DefaultExt, alg::SIPResRev, s::UpperProblem, m::JuMP.Model, sr::SIPSubResult, i::Int) + set_tolerance_inner!(t, alg, s, m, sr.ubd.tol) +end + +function get_disc_set(t::ExtensionType, alg::SIPResRev, s::LowerProblem, sr::SIPSubResult, i::Int) + sr.disc_l[i] +end +function get_disc_set(t::ExtensionType, alg::SIPResRev, s::UpperProblem, sr::SIPSubResult, i::Int) + sr.disc_u[i] +end + +function sip_solve!(t::ExtensionType, alg::SIPResRev, buffer::SIPSubResult, prob::SIPProblem, + result::SIPResult, cb::SIPCallback) + + verb = prob.verbosity + + # initializes solution + @label main_iteration + check_convergence(result, prob.abs_tolerance, verb) && @goto main_end + + # solve lower bounding problem and check feasibility + sip_bnd!(t, alg, LowerProblem(), buffer, result, prob, cb) + result.lower_bound = buffer.lbd.obj_val + if !buffer.lbd.feas + result.feasibility = false + println("Terminated: lower bounding problem infeasible.") + @goto main_end + end + print_summary!(LowerProblem(), verb, buffer) + + # solve inner program and update lower discretization set + is_llp1_nonpositive = true + for i = 1:prob.nSIP + sip_llp!(t, alg, LowerLevel1(), result, buffer, prob, cb, i) + buffer.disc_l_buffer .= buffer.llp1.sol + print_summary!(LowerLevel1(), verb, buffer, i) + if buffer.llp1.obj_bnd <= 0.0 + continue + elseif buffer.llp1.obj_val > 0.0 + push!(buffer.disc_l[i], deepcopy(buffer.disc_l_buffer)) + is_llp1_nonpositive = false + else + buffer.eps_l[i] = (buffer.llp1.obj_bnd - buffer.llp1.obj_val)/buffer.r_l + is_llp1_nonpositive = false + end + end + + # if the lower problem is feasible then it's solution is the optimal value + if is_llp1_nonpositive + result.upper_bound = buffer.lbd.obj_val + result.xsol .= buffer.lbd.sol + result.feasibility = true + @goto main_end + end + + # solve upper bounding problem, if feasible solve lower level problem, + # and potentially update upper discretization set + sip_bnd!(t, alg, UpperProblem(), buffer, result, prob, cb) + print_summary!(UpperProblem(), verb, buffer) + if buffer.ubd.feas + is_llp2_nonpositive = true + for i = 1:prob.nSIP + sip_llp!(t, alg, LowerLevel2(), result, buffer, prob, cb, i) + buffer.disc_u_buffer .= buffer.llp2.sol + print_summary!(LowerLevel2(), verb, buffer, i) + if buffer.llp2.obj_bnd <= 0.0 + buffer.eps_g[i] /= buffer.r_g + continue + else + push!(buffer.disc_u[i], deepcopy(buffer.disc_u_buffer)) + is_llp2_nonpositive = false + end + end + if is_llp2_nonpositive + if buffer.ubd.obj_val <= result.upper_bound + result.upper_bound = buffer.ubd.obj_val + result.xsol .= buffer.ubd.sol + end + end + else + buffer.eps_g ./= buffer.r_g + end + + # print iteration information and advance + print_int!(verb, prob, result, buffer.r_g) + result.iteration_number += 1 + result.iteration_number < prob.iteration_limit && @goto main_iteration + + @label main_end + return nothing +end diff --git a/src/eago_semiinfinite/optimizer_interface/README.md b/src/eago_semiinfinite/optimizer_interface/README.md new file mode 100644 index 00000000..3ec498b1 --- /dev/null +++ b/src/eago_semiinfinite/optimizer_interface/README.md @@ -0,0 +1,3 @@ +This section is currently being developed and the functionality herein will +be released with EAGO 0.7+. Currently, these subroutines are not functional or +exported and are commented out in the main EAGO branch. diff --git a/src/eago_semiinfinite/optimizer_interface/classify_sip.jl b/src/eago_semiinfinite/optimizer_interface/classify_sip.jl new file mode 100644 index 00000000..07bf9598 --- /dev/null +++ b/src/eago_semiinfinite/optimizer_interface/classify_sip.jl @@ -0,0 +1,85 @@ + +#= +const CR = JuMP.ConstraintRef + +function classify_sip!(mSIP::SIPModel, c::AbstractConstraint) + error("Function classify_sip! not defined for a constraint of type = $(typeof(c))") +end + +function update_status(status::SIPCons, term_status::SIPCons) + if status == SIPNOTSET + return term_status + elseif (status == DECISION) && (term_status == DECISION) + return DECISION + elseif (status == UNCERTAIN) && (term_status == UNCERTAIN) + return UNCERTAIN + end + return SEMIINFINITE +end + +classify_sip(mSIP::SIPModel, v::VariableRef) = mSIP.p[v] ? UNCERTAIN : DECISION +function classify_sip(mSIP::SIPModel, expr::GenericAffExpr{T,VariableRef}) where T + status = SIPNOTSET + for term in linear_terms(expr) + status = update_status(status, classify_sip(mSIP, term[1])) + if status == SEMIINFINITE + break + end + end + return status +end +function classify_sip(mSIP::SIPModel, expr::GenericQuadExpr{T,VariableRef}) where T + status = SIPNOTSET + for term in quad_terms(expr) + status = update_status(status, classify_sip(mSIP, term[2])) + status = update_status(status, classify_sip(mSIP, term[3])) + if status == SEMIINFINITE + break + end + end + for term in linear_terms(expr) + status = update_status(status, classify_sip(mSIP, term[1])) + if status == SEMIINFINITE + break + end + end + return status +end + +for typ in (:(Vector{GenericQuadExpr{T,VariableRef}}), + :(Vector{GenericAffExpr{T,VariableRef}}), + :(Vector{VariableRef})) + @eval function classify_sip(mSIP::SIPModel, expr::Vector{$typ{T,VariableRef}}) where T + status = SIPNOTSET + for ex in expr + status = update_status(status, classify_sip(mSIP, ex)) + if status == SEMIINFINITE + break + end + end + return status + end +end + +function classify_sip!(mSIP::SIPModel, cr::ScalarConstraint{F,S}) where {F<:JuMP.AbstractJuMPScalar, S<:JuMP.AbstractScalarSet} + mSIP.constraint_type[cr] = classify_sip(mSIP, constraint_object(cr).func) + nothing +end + +function classify_sip!(mSIP::SIPModel, cr::CR{M,C,S}) where {M<:JuMP.AbstractModel, C ,S<:JuMP.AbstractShape} + mSIP.constraint_type[cr] = classify_sip(constraint_object(cr)) + nothing +end + +function classify_sip!(mSIP::SIPModel) + constraint_types = list_of_constraint_types(mSIP.m) + for (func_typ, set_typ) in constraint_types + constraint_refs = all_constraints(mSIP.m, func_typ, set_typ) + for cr in constraint_refs + classify_sip!(mSIP, cr) + end + end + # TODO: ADD CLASSIFICATION OF NONLINEAR EQUATIONS + return nothing +end +=# diff --git a/src/eago_semiinfinite/optimizer_interface/optimizer.jl b/src/eago_semiinfinite/optimizer_interface/optimizer.jl new file mode 100644 index 00000000..ec5d447f --- /dev/null +++ b/src/eago_semiinfinite/optimizer_interface/optimizer.jl @@ -0,0 +1,71 @@ + +#= +Base.@kwdef mutable struct SIPOptimizer <: MOI.AbstractOptimizer + objective_sense::MOI.OptimizationSense = MOI.FEASIBLE_SENSE + time_limit::Float64 = 1000.0 + is_silent::Bool = false + x::Vector{Float64} = Float64[] + obj_bound::Float64 = 0.0 + obj_value::Float64 = 0.0 + termination_status::MOI.TerminationStatusCode = MOI.OPTIMIZE_NOT_CALLED + result_status_code::MOI.ResultStatusCode = MOI.UNKNOWN_RESULT_STATUS + run_time::Float64 = 0.0 +end + +function MOI.empty!(m::SIPOptimizer) +end +function MOI.is_empty(m::Optimizer) +end + +function MOI.set(m::SIPOptimizer, ::MOI.Silent, value) + m.is_silent = value + return nothing +end + +function MOI.set(m::SIPOptimizer, ::MOI.TimeLimitSec, value::Nothing) + m.time_limit = Inf + return nothing +end +function MOI.set(m::SIPOptimizer, ::MOI.TimeLimitSec, value::Float64) + m.time_limit = value + return nothing +end + +MOI.set(m::SIPOptimizer, p::MOI.RawParameter, value) = error("The SIPOptimizer does not have any raw parameters.") + +function MOI.get(m::SIPOptimizer, ::MOI.ListOfVariableIndices) +end +function MOI.get(m::SIPOptimizer, ::MOI.NumberOfVariables) +end + +function MOI.get(m::SIPOptimizer, ::MOI.ObjectiveValue) + +end +function MOI.get(m::SIPOptimizer, ::MOI.ObjectiveBound) + +end + +MOI.get(m::SIPOptimizer, p::MOI.RawParameter) = error("The SIPOptimizer does not have any raw parameters.") + + +function MOI.get(m::SIPOptimizer, ::MOI.RelativeGap) + abs(objective_bound() - objective_value())/objective_value() +end +MOI.get(m::SIPOptimizer, ::MOI.SolverName) = "EAGO: SIPOptimizer" +MOI.get(m::SIPOptimizer, ::MOI.TerminationStatus) = m._termination_status_code +MOI.get(m::SIPOptimizer, ::MOI.PrimalStatus) = m.result_status_code +MOI.get(m::SIPOptimizer, ::MOI.SolveTime) = m.run_time +MOI.get(m::SIPOptimizer, ::MOI.ResultCount) = (m.result_status_code === MOI.FEASIBLE_POINT) ? 1 : 0 +MOI.get(m::SIPOptimizer, ::MOI.TimeLimitSec) = m.time_limit + +MOI.supports(::SIPOptimizer, ::MOI.TimeLimitSec) = true +MOI.supports(::SIPOptimizer, ::MOI.ObjectiveSense) = true +function MOI.set(m::SIPOptimizer, ::MOI.ObjectiveSense, sense::MOI.OptimizationSense) + m.objective_sense = sense + return nothing +end + + +function MOI.optimize!(m::SIPOptimizer) +end +=# diff --git a/src/eago_semiinfinite/optimizer_interface/scratch_sheet.jl b/src/eago_semiinfinite/optimizer_interface/scratch_sheet.jl new file mode 100644 index 00000000..9fc96967 --- /dev/null +++ b/src/eago_semiinfinite/optimizer_interface/scratch_sheet.jl @@ -0,0 +1,29 @@ + +#= +using JuMP + +function pseudo_copy(m::JuMP.Model) + + nlp_new = deepcopy(m.nlp_data) + nlp_new.evaluator = NLPEvaluator(m) + MOI.initialize(nlp_new.evaluator, Symbol[:ExprGraph]) + + obj_expr = MOI.objective_expr(nlp_new.evaluator) + con_expr = MOI.constraint_expr(nlp_new.evaluator, 1) + + @show obj_expr + @show con_expr + + return nothing +end + +m = Model() +@variable(m, x[1:3]) +@variable(m, y) +@NLconstraint(m, x[1] + y^2 <= 0.0) +@NLobjective(m, Min, x[2]*x[3]*y^2) + +nlp_data = m.nlp_data + +out = pseudo_copy(m) +=# diff --git a/src/eago_semiinfinite/optimizer_interface/sip_model.jl b/src/eago_semiinfinite/optimizer_interface/sip_model.jl new file mode 100644 index 00000000..f90d7b08 --- /dev/null +++ b/src/eago_semiinfinite/optimizer_interface/sip_model.jl @@ -0,0 +1,170 @@ +#= + +Macro interface is inspired by InfiniteOpt.jl. Many of the code structures are +reused. Transitioning this over to a fully InfiniteOpt.jl in the future is desirable +but most of our use cases involve nonlinear functions so that InfiniteOpt.jl +nonlinear support is gating. + +The general idea here is pretty simple. When we add a variable to the model +the user specifies whether or not it is a decision variable or an uncertain +variable we then classify constraints. See https://github.com/PSORLab/EAGO.jl/issues/61 +for a discussion of the roadmap here. +=# + +#= +@enum(SIPCons, DECISION, UNCERTAIN, SEMIINFINITE, SIPNOTSET) +const MOIU_AUTO_CACHE = MOIU.CachingOptimizerMode.AUTOMATIC + +Base.@kwdef mutable struct SIPData + p::Dict{JuMP.VariableRef,Bool} = Dict{JuMP.VariableRef,Bool}() + constr_type::Dict{JuMP.ConstraintRef, SIPCons} = Dict{JuMP.ConstraintRef, SIPCons}() + nl_constraint_type::Dict{Int, SIPCons} = Dict{Int, SIPCons}() + nl_expression_type::Dict{Int, SIPCons} = Dict{Int, SIPCons}() + model_decision::Model = Model(caching_mode = MOIU_AUTO_CACHE) + model_uncertain::Model = Model((aching_mode = MOIU_AUTO_CACHE) + model_semiinfinite::Model = Model(caching_mode = MOIU_AUTO_CACHE) +end +uncertain_variable_num(d::SIPData) = any(x -> x, d.p) + +function _copy_nlp_objective!(out::JuMP.Model, m::JuMP.Model, nlp_data::JuMP._NLPData) + if nlp_data.nlobj !== nothing + # TODO CHECK THAT THE FORMULATION IS PEACHY + obj_expr = MOI.objective_expr(nlp_new.evaluator) + # obj_expr_jref = substitute moi variables to jump refs... + @NLobjective(m.ext[:sip].model_decision, Min, obj_expr_jref) + end + return nothing +end + +function _copy_nlp_constraints!(m::JuMP.Model, nlp_data::JuMP._NLPData) + for i = 1:length(nlp_data.nlconstr) + con_expr = MOI.constraint_expr(nlp_data.evaluator, i) + end + return nothing +end + +""" + +Populates variables and constraints into one of three models based on classification: +1) store decision variables and constraints containing only decision variables in +`m.model_decision`, 2) store uncertain variables and constraints containing only +uncertain variables in `m.model_uncertain`, 3) store all variables and all +constraints containing both decision variables to `m.model_semiinfinite`. +""" +function initialize_pure_models!(m::JuMP.Model) + if haskey(m.ext, :sip) + + # extract sip data and storage models + sip_data = _get_sip_data(m)::SIPData + m_dec = sip_data.model_decision + m_unc = sip_data.model_uncertain + m_sip = sip_data.model_semiinfinite + + # get index map + indx_map_dec = MOI.copy_to(backend(m_dec), backend(m), copy_names = true) + indx_map_unc = MOI.copy_to(backend(m_unc), backend(m), copy_names = true) + indx_map_sip = MOI.copy_to(backend(m_sip), backend(m), copy_names = true) + + # copy extension data + for (key, data) in m.ext + if key != :sip + m_dec.ext[key] = copy_extension_data(data, m_dec, m) + m_unc.ext[key] = copy_extension_data(data, m_unc, m) + m_sip.ext[key] = copy_extension_data(data, m_sip, m) + end + end + + # copy objects (TODO need to check on SIP, DEC, UNC) + reference_map = ReferenceMap(new_model, index_map) + for (name, value) in object_dictionary(model) + new_model[name] = getindex.(reference_map, value) + end + + if m.nlp_data !== nothing + nlp_data = deepcopy(m.nlp_data) + nlp_data.evaluator = NLPEvaluator(m) + MOI.initialize(nlp_data.evaluator, Symbol[:ExprGraph]) + copy_nlp_objective!(m, nlp_data) + copy_nlp_expressions!(m, nlp_data) + copy_nlp_constraints!(m, nlp_data) + end + + for (vi, is_uncertain) in m.ext.p + model_semiinfinite + model_decision_ + end + return nothing +end + + +function initialize_sip_data(m::JuMP.Model) + m.ext[:sip] = SIPData() +end + +function sip_optimizehook(m::JuMP.Model; kwargs...) + data = _getsipdata(m)::SIPData + if uncertain_variable_num(data) == 0.0 + ret = JuMP.optimize!(m::JuMP.Model, ignore_optimize_hook = true, kwargs...) + else + initialize_pure_models!(m) + ret = sip_solve(data) + end + return ret +end + +function enable_semiinfinite(m::JuMP.Model) + haskey(m.ext, :sip) && error("Model already has semiinfinite programs enabled") + initialize_sip_data(m) + JuMP.set_optimize_hook(m, sip_optimizehook) + return nothing +end + +function ModelWithSIP(args...; kwargs...) + m = JuMP.Model(args...; kwargs...) + set_optimizer(SIPOptimizer) + enable_semiinfinite(m) + return m +end + +""" + @uncertain_variable + +Add an *anonymous* variable to `m::SIPModel` described by the keyword +arguments `kw_args` and returns the variable. + + @uncertain_variable(m, expr, args..., kw_args...) + +This macro simply denotes the variable as belonging to the set of uncertain +variables and then performs `@variable(m, expr, args..., kw_args...)` to +add the variable to the basic JuMP model for storage. All JuMP syntax is +supported. +""" +macro uncertain_variable(args...) + esc(quote + vi = @variable($(args...)) + $(args[1]).ext[:sip].p[vi] = true + vi + end) +end + +""" + @decision_variable + +Add an *anonymous* variable to `m::SIPModel` described by the keyword +arguments `kw_args` and returns the variable. + + @decision_variable(m, expr, args..., kw_args...) + +This macro simply denotes the variable as belonging to the set of decision +variables and then performs `@variable(m, expr, args..., kw_args...)` to +add the variable to the basic JuMP model for storage. All JuMP syntax is +supported. +""" +macro decision_variable(args...) + esc(quote + vi = @variable($(args...)) + $(args[1]).ext[:sip].p[vi] = false + vi + end) +end +=# diff --git a/src/eago_semiinfinite/semi_infinite.jl b/src/eago_semiinfinite/semi_infinite.jl deleted file mode 100644 index 6044258d..00000000 --- a/src/eago_semiinfinite/semi_infinite.jl +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. -# This code is licensed under MIT license (see LICENSE.md for full details) -############################################################################# -# EAGO -# A development environment for robust and global optimization -# See https://github.com/PSORLab/EAGO.jl -############################################################################# -# src/eago_semiinfinite/semi_infinite.jl -# Defines utilities for generic SIP routines. -############################################################################# - -abstract type AbstractSIPAlgo end - -struct SIPRes <: AbstractSIPAlgo end - -""" - SIPResult - -Structure storing the results of the SIPres algorithm. -""" -mutable struct SIPResult - iteration_number::Int64 - upper_bound::Float64 - lower_bound::Float64 - feasibility::Bool - xsol::Vector{Float64} - psol::Vector{Float64} - solution_time::Float64 -end -SIPResult() = SIPResult(1, Inf, -Inf, true, Float64[], Float64[], 0.0) - -""" - SIPProblem - -Structure storing problem information for the solution routine. -""" -mutable struct SIPProblem - x_l::Vector{Float64} - x_u::Vector{Float64} - p_l::Vector{Float64} - p_u::Vector{Float64} - - np::Int64 - nSIP::Int64 - nx::Int64 - sense::Symbol - - init_lower_disc::Vector{Vector{Vector{Float64}}} - init_upper_disc::Vector{Vector{Vector{Float64}}} - - absolute_tolerance::Float64 - constraint_tolerance::Float64 - iteration_limit::Int64 - initial_eps_g::Float64 - initial_r::Float64 - - return_hist::Bool - header_interval::Int64 - print_interval::Int64 - verbosity::Int64 - - local_solver::Bool - - #polyhedral_uncertainty_set - #ellipsodial_uncertainty_set - - optimizer - kwargs -end - -function SIPProblem(x_l::Vector{Float64}, x_u::Vector{Float64}, - p_l::Vector{Float64}, p_u::Vector{Float64}, - gSIP, optimizer, kwargs) - - np = length(p_l) - nx = length(x_l) - - absolute_tolerance = haskey(kwargs, :sip_absolute_tolerance) ? kwargs[:sip_absolute_tolerance] : 1E-3 - constraint_tolerance = haskey(kwargs, :sip_constraint_tolerance) ? kwargs[:sip_constraint_tolerance] : 1E-3 - iteration_limit = haskey(kwargs, :sip_iteration_limit) ? kwargs[:sip_iteration_limit] : 100 - initial_eps_g = haskey(kwargs, :sip_initial_eps_g) ? kwargs[:sip_initial_eps_g] : 1.0 - initial_r = haskey(kwargs, :sip_initial_r) ? kwargs[:sip_initial_r] : 2.0 - - return_hist = haskey(kwargs, :sip_return_hist) ? kwargs[:sip_return_hist] : false - header_interval = haskey(kwargs, :sip_header_interval) ? kwargs[:sip_header_interval] : 20 - print_interval = haskey(kwargs, :sip_print_interval) ? kwargs[:sip_print_interval] : 1 - verbosity = haskey(kwargs, :sip_verbosity) ? kwargs[:sip_verbosity] : 1 - local_solver = haskey(kwargs, :sip_local_solver) ? kwargs[:sip_local_solver] : false - - sense = haskey(kwargs, :sip_sense) ? kwargs[:sip_sense] : :min - init_lower_disc = haskey(kwargs, :sip_init_lower_disc) ? kwargs[:sip_init_lower_disc] : Vector{Vector{Float64}}[] - init_upper_disc = haskey(kwargs, :sip_init_upper_disc) ? kwargs[:sip_init_upper_disc] : Vector{Vector{Float64}}[] - - opt_dict = Dict{Symbol,Any}() - for key in keys(kwargs) - string_key = String(key) - if string_key[1:3] !== "sip" - opt_dict[key] = kwargs[key] - end - end - - # polyhedral_uncertainty_set = nothing - # ellipsodial_uncertainty_set = nothing - # conic_uncertainty_set = nothing - # convex_uncertainty_set = nothing - - nSIP = length(gSIP) - - SIPProblem(x_l, x_u, p_l, p_u, np, nSIP, nx, sense, init_lower_disc, - init_upper_disc, absolute_tolerance, constraint_tolerance, - iteration_limit, - initial_eps_g, initial_r, return_hist, header_interval, - print_interval, verbosity, local_solver, - #polyhedral_uncertainty_set, - #ellipsodial_uncertainty_set, conic_uncertainty_set, - #convex_uncertainty_set, - optimizer, opt_dict) -end - -function print_int!(verbosity::Int64, hdr_intv::Int64, prt_intv::Int64, - k_int::Int64, lbd::Float64, ubd::Float64, - eps::Float64, r::Float64, ismin::Bool) - - if (verbosity == 1 || verbosity == 2) - - # prints header line every hdr_intv times - if (mod(k_int, hdr_intv) == 0 || k_int == 1) - println("| Iteration | Lower Bound | Upper Bound | eps | r | Gap | Ratio |") - end - - # prints iteration summary every prnt_intv times - if mod(k_int, prt_intv) == 0 - - print_str = "| " - - max_len = 15 - temp_str = string(k_int) - len_str = length(temp_str) - print_str *= (" "^(max_len - len_str))*temp_str*" | " - - max_len = 15 - lower_adj = ismin ? lbd : ubd - temp_str = string(round(lower_adj, digits = 6)) - len_str = length(temp_str) - print_str *= (" "^(max_len - len_str))*temp_str*" | " - - max_len = 15 - upper_adj = ismin ? ubd : lbd - temp_str = string(round(upper_adj, digits = 6)) - len_str = length(temp_str) - print_str *= (" "^(max_len - len_str))*temp_str*" | " - - max_len = 15 - temp_str = string(round(eps, digits = 6)) - len_str = length(temp_str) - print_str *= (" "^(max_len - len_str))*temp_str*" | " - - max_len =15 - temp_str = string(round(r, digits = 5)) - len_str = length(temp_str) - print_str *= (" "^(max_len - len_str))*temp_str*" | " - - max_len = 15 - temp_str = string(round((ubd-lbd), digits = 5)) - len_str = length(temp_str) - print_str *= (" "^(max_len - len_str))*temp_str*" | " - - max_len = 18 - temp_str = string(round((ubd-lbd)/abs(ubd), digits = 6)) - len_str = length(temp_str) - print_str *= (" "^(max_len - len_str))*temp_str*" |" - - println(print_str) - end - end - return nothing -end - -function print_summary!(verb::Int64, val::Float64, x::Vector{Float64}, - feas::Bool, desc::String) - (verb == 2 || verb == 1) && println("solved $desc: ", val, " ", x, " ", feas) - return nothing -end - -function check_inputs!(initial_r::Float64, initial_eps_g::Float64) - (initial_r <= 1.0) && error("initial_r must be greater than 1") - (initial_eps_g <= 0.0) && error("eps_g must be greater than 0") - return nothing -end - -function check_convergence(LBD::Float64, UBD::Float64, atol::Float64, verb::Int64) - if abs(UBD - LBD) < atol - (verb == 2 || verb == 1) && println("Algorithm Converged") - return true - end - return false -end - -struct SIPCallback - f - gSIP -end - -mutable struct SIPBuffer - pbar - xbar -end - -include("sip_explicit.jl") diff --git a/src/eago_semiinfinite/semiinfinite.jl b/src/eago_semiinfinite/semiinfinite.jl new file mode 100644 index 00000000..2cf6081a --- /dev/null +++ b/src/eago_semiinfinite/semiinfinite.jl @@ -0,0 +1,50 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_semiinfinite/semi_infinite.jl +# Defines high level interface for SIP routines. +############################################################################# + +include("types.jl") +include("subproblems.jl") + +function sip_solve(t::ExtensionType, alg::AbstractSIPAlgo, subresult, prob, result, cb) + error("Algorithm $t not supported by explicit_sip_solve.") +end + +""" + sip_solve + +Solve an SIP with decision variable bounds `x_l` to `x_u`, uncertain variable +bounds `p_l` to `p_u`, an objective function of `f`, and `gSIP` seminfiniite +constraint(s). +""" +function sip_solve(alg::T, x_l::Vector{Float64}, x_u::Vector{Float64}, + p_l::Vector{Float64}, p_u::Vector{Float64}, + f::Function, gSIP::Vector{Any}; d = DefaultExt(), kwargs...) where {T <: AbstractSIPAlgo} + + @assert length(p_l) == length(p_u) + @assert length(x_l) == length(x_u) + + prob = SIPProblem(x_l, x_u, p_l, p_u, gSIP, kwargs) + subresult = SIPSubResult(prob.nx, prob.np, prob.nSIP, prob.abs_tolerance) + result = SIPResult(prob.nx, prob.np) + cb = SIPCallback(f, gSIP) + + sip_solve!(d, alg, subresult, prob, result, cb) + return result +end + +function sip_solve(alg::T, x_l::Vector{Float64}, x_u::Vector{Float64}, + p_l::Vector{Float64}, p_u::Vector{Float64}, + f::Function, gSIP::Function; d = DefaultExt(), kwargs...) where {T <: AbstractSIPAlgo} + return sip_solve(alg, x_l, x_u, p_l, p_u, f, [gSIP], d = d, kwargs...) +end + +include("nonconvex_algorithms/sip_hybrid.jl") +include("nonconvex_algorithms/sip_res_rev.jl") +include("nonconvex_algorithms/sip_res.jl") diff --git a/src/eago_semiinfinite/sip_explicit.jl b/src/eago_semiinfinite/sip_explicit.jl deleted file mode 100644 index b7d22746..00000000 --- a/src/eago_semiinfinite/sip_explicit.jl +++ /dev/null @@ -1,284 +0,0 @@ -# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. -# This code is licensed under MIT license (see LICENSE.md for full details) -############################################################################# -# EAGO -# A development environment for robust and global optimization -# See https://github.com/PSORLab/EAGO.jl -############################################################################# -# src/eago_semiinfinite/sip_explicit.jl -# An implementation of the SIPres algorithm. -############################################################################# - -abstract type AbstractSubproblemType end -struct DefaultSubproblem <: AbstractSubproblemType end - -# Load a model in a way that gets rid of any issues with pointers for C references -# particularly in the EAGO solver... -function build_model_llp(::DefaultSubproblem, prob::SIPProblem) - model = Model(prob.optimizer) - @variable(model, prob.p_l[i] <= p[i=1:prob.np] <= prob.p_u[i]) - for (k,v) in prob.kwargs - MOI.set(model, MOI.RawParameter(String(k)), v) - end - return model, p -end - -function build_model_bnd(::DefaultSubproblem, prob::SIPProblem) - model = Model(prob.optimizer) - @variable(model, prob.x_l[i] <= x[i=1:prob.nx] <= prob.x_u[i]) - for (k,v) in prob.kwargs - MOI.set(model, MOI.RawParameter(String(k)), v) - end - return model, x -end - -function add_uncertainty_constraint!(model::JuMP.Model, problem::SIPProblem) - #if !isnothing(model.polyhedral_uncertainty_set) - #@constraint(model, ) - #end - #if !isnothing(model.ellipsodial_uncertainty_set) - #@constraint(model, ) - #end - return nothing -end - -function llp_check(is_local::Bool, t::MOI.TerminationStatusCode, r::MOI.PrimalResultCode) - valid_result, is_feasible = is_globally_optimal(t, r) - if is_local - if (t_status != MOI.LOCALLY_SOLVED) && (t != MOI.ALMOST_LOCALLY_SOLVED) - error("Lower problem did not solve to local optimality.") - end - elseif !valid_result - error("Error encountered in lower level problem. Termination status - is $t. Primal status is $r.") - end - return is_feasible -end -function sipRes_llp!(t::DefaultSubproblem, result::SIPResult, buffer::SIPBuffer, prob::SIPProblem, cb::SIPCallback, indx::Int64) - # build the model - m_llp, p = build_model_llp(t, prob) - - # define the objective - g(p...) = cb.gSIP[indx](xbar, p) - register(m_llp, :g, prob.np, g, autodiff=true) - nl_obj = prob.np == 1 ? :(-($g)(p[1])) :(-($g)(p...)) - set_NL_objective(m_llp, MOI.MIN_SENSE, nl_obj) - - add_uncertainty_constraint!(m_llp, problem) - - # optimize model and check status - JuMP.optimize!(m_llp) - tstatus = JuMP.termination_status(m_llp) - rstatus = JuMP.primal_status(m_llp) - is_feasible = llp_check(prob.local_solver, tstatus, rstatus) - - # fill buffer with subproblem result info - buffer.is_feasible = is_feasible - buffer.obj_value = -JuMP.objective_value(m_llp) - @__dot__ buffer.p_bar = JuMP.value(p) - result.solution_time += MOI.get(model_llp, MOI.SolveTime()) - - return nothing -end -function sipRes_llp!(t::AbstractSubproblemType, result::SIPResult, buffer::SIPBuffer, prob::SIPProblem, cb::SIPCallback, indx::Int64) - sipRes_llp!(DefaultSubproblem(), result, buffer, prob, cb, indx) -end - -function bnd_check(is_local::Bool, t::MOI.TerminationStatusCode, - r::MOI.PrimalResultCode, eps_g::Float64) - valid_result, is_feasible = is_globally_optimal(t, r) - if (!(valid_result && is_feasible) && iszero(eps_g)) && !is_local - error("Lower problem did not solve to global optimality. - Termination status = $t. Primal status = $r") - elseif (!(valid_result && is_feasible) && iszero(eps_g)) && is_local && - !((t == MOI.LOCALLY_SOLVED) || (t == MOI.ALMOST_LOCALLY_SOLVED)) - error("Lower problem did not solve to local optimality.") - end - return is_feasible -end - -function sipRes_bnd(t::AbstractSubproblemType, buffer, initialize_extras, disc_set::Vector{Vector{Vector{Float64}}}, - eps_g::Float64, sip_storage::SIPResult, prob::SIPProblem, flag::Bool, cb::SIPCallback) - sipRes_bnd(t, buffer, initialize_extras, disc_set, eps_g, sip_storage, prob, flag, cb) -end - -# should be done -function sipRes_bnd(t::DefaultSubproblem, buffer, initialize_extras, disc_set::Vector{Vector{Vector{Float64}}}, - eps_g::Float64, sip_storage::SIPResult, - prob::SIPProblem, flag::Bool, cb::SIPCallback) - - # create JuMP model - m_bnd = build_model(prob) - @variable(m_bnd, prob.x_l[i] <= x[i=1:prob.nx] <= prob.x_u[i]) - initialize_extras(m_bnd, x) # TODO: Still worth having this feature? - - for i = 1:prob.nSIP - for j = 1:length(disc_set) - gi = Symbol("g$i$j") - g(x...) = cb.gSIP[i](x, disc_set[j][i]) - register(m_bnd, gi, nx, g, autodiff=true) - xids = VariableRef[VariableRef(m_bnd, MOI.VI(i)) for i = 1:prob.nx] - JuMP.add_NL_constraint(m_bnd, :($(gi)($(tuple(xids...))) + $ep_g <= 0)) - end - end - - # define the objective - obj_factor = prob.sense == :min ? 1.0 : -1.0 - obj(x...) = obj_factor*cb.f(x) - register(m_bnd, :obj, prob.nx, obj, autodiff=true) - nl_obj = isone(prob.nx) ? :(($obj)(x[1])) :(($obj)(x...)) - set_NL_objective(m_bnd, MOI.MIN_SENSE, nl_obj) - - # optimize model and check status - JuMP.optimize!(m_bnd) - termination_status = JuMP.termination_status(m_bnd) - result_status = JuMP.primal_status(m_bnd) - is_feasible = bnd_check(prob.local_solver, termination_status, result_status, eps_g) - - # fill buffer with subproblem result info - buffer.is_feasible = is_feasible - buffer.obj_value = obj_factor*JuMP.objective_bound(m_bnd) - @__dot__ buffer.x_bar = JuMP.value(x) - result.solution_time += MOI.get(model_llp, MOI.SolveTime()) - - return false -end - -no_init_bnd(m::JuMP.Model, x::Vector{JuMP.VariableRef}) = () - -function sip_solve!(t::AbstractSIPAlgo, init_bnd, prob, result, cb) - error("Algorithm $t not supported by explicit_sip_solve.") -end - -function sip_solve!(t::SIPRes, init_bnd, prob::SIPProblem, result::SIPResult, cb::SIPCallback) - - verb = prob.verbosity - header_interval = prob.header_interval - print_interval = prob.print_interval - abs_tolerance = prob.absolute_tolerance - - # initializes solution - xbar = (prob.x_u + prob.x_l)/2.0 - pbar = (prob.p_u + prob.p_l)/2.0 - nx = prob.nx - np = prob.np - tolerance = prob.constraint_tolerance - ismin = prob.sense === :min - - eps_g = prob.initial_eps_g - r = prob.initial_r - feas = true - xstar = fill(NaN,(nx,)) - new_disc_points = fill(zeros(Float64, np), ) - - # checks for convergence - for k = 1:prob.iteration_limit - - # check for termination - check_convergence(result.lower_bound, result.upper_bound, abs_tolerance, verb) && (break) - - # solve lower bounding problem and check feasibility - sipRes_bnd!(buffer, init_bnd, prob.lower_disc, 0.0, result, prob, true, cb) - result.lower_bound = buffer.objective_value - if !is_feasible(buffer) - result.feasibility = feas - println("Lower Bounding Problem Not Feasible. Algorithm Terminated") - break - end - print_summary!(verb, result.lower_bound, result.xsol, result.feasibility, "LBD") - - # solve inner program and update lower discretization set - non_positive_flag = true - for i = 1:prob.nSIP - sipRes_llp!(buffer, result.xsol, result, prob, cb, i) - if (verb == 1) || (verb == 2) - print_summary!(buffer, "Lower LLP$i") - end - if (llp_out[1] + tolerance > 0.0) - non_positive_flag = false - end - buffer.lower_disc[i] .= buffer.pbar - end - push!(prob.lower_disc, deepcopy(buffer.lower_disc)) - if non_positive_flag - result.feasibility = true - break - end - - # solve upper bounding problem, if feasible solve lower level problem, - # and potentially update upper discretization set - sipRes_bnd!(buffer, init_bnd, prob.upper_disc, eps_g, result, prob, false, cb) - print_summary!(verb, buffer, :x, "UBD") - if is_feasible(buffer) - non_positive_flag = true - for i = 1:prob.nSIP - sipRes_llp!(buffer, result.xsol, result, prob, cb, i) - print_summary!(verb, buffer, :p, "Upper LLP$i") - if llp2_out[1] + tolerance/10.0 > 0.0 - non_positive_flag = false - end - buffer.upper_disc[i] .= buffer.pbar - end - if non_positive_flag - if (val <= result.upper_bound) && ismin - result.upper_bound = val - xstar .= result.xsol - elseif (val <= result.upper_bound) && ~ismin && (result.upper_bound === Inf) - result.upper_bound = val - xstar .= result.xsol - elseif (val >= result.upper_bound) && ~ismin - result.upper_bound = val - xstar .= result.xsol - end - eps_g /= r - else - push!(prob.upper_disc, deepcopy(buffer.upper_disc)) - end - else - eps_g /= r - end - - # print iteration information and advance - print_int!(verb, header_interval, print_interval, k, result.lower_bound, result.upper_bound, eps_g, r, ismin) - result.iteration_number = k - end - - return nothing -end - -""" - explicit_sip_solve - -Solve an SIP with decision variable bounds `x_l` to `x_u`, uncertain variable -bounds `p_l` to `p_u`, an objective function of `f`, and `gSIP` seminfiniite -constraint(s). -""" -function sip_solve(t::T, x_l::Vector{Float64}, x_u::Vector{Float64}, - p_l::Vector{Float64}, p_u::Vector{Float64}, - f::Function, gSIP; kwargs...) where T <: AbstractSIPAlgo - - @assert length(p_l) == length(p_u) - @assert length(x_l) == length(x_u) - - # collects all keyword arguments of the form :gSIP1, gSIP24234, :gSIPHello - init_bnd = haskey(kwargs, :sip_init_bnd) ? kwargs[:sip_init_bnd] : no_init_bnd - algo = haskey(kwargs, :sip_algo) ? kwargs[:sip_algo] : :sipRes - m = haskey(kwargs, :sip_optimizer) ? kwargs[:sip_optimizer] : EAGO.Optimizer - - prob = SIPProblem(x_l, x_u, p_l, p_u, gSIP, m, kwargs) - check_inputs!(prob.initial_r, prob.initial_eps_g) - result = SIPResult() - result.xsol = fill(0.0, (prob.nx,)) - result.psol = fill(0.0, (prob.np,)) - - cb = SIPCallback(f, gSIP) - - sip_solve!(t, init_bnd, prob, result, cb) - return result -end - -function sip_solve(t::T, x_l::Vector{Float64}, x_u::Vector{Float64}, - p_l::Vector{Float64}, p_u::Vector{Float64}, - f::Function, gSIP::Function; kwargs...) where T <: AbstractSIPAlgo - return sip_solve(t, x_l, x_u, p_l, p_u, f, [gSIP], kwargs...) -end diff --git a/src/eago_semiinfinite/subproblems.jl b/src/eago_semiinfinite/subproblems.jl new file mode 100644 index 00000000..7fea5422 --- /dev/null +++ b/src/eago_semiinfinite/subproblems.jl @@ -0,0 +1,405 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# src/eago_semiinfinite/sub_problems.jl +# Defines utilities for generic SIP subroutines. +############################################################################# + +""" + build_model + +Create the model and variables used with extension `t::EAGO.ExtensionType` in algorithm +`a::AbstractSIPAlgo` in subproblem `s::AbstractSubproblemType` via the command +`build_model(t::ExtensionType, a::AbstractSIPAlgo, s::AbstractSubproblemType, p::SIPProblem)`. +""" +function build_model(t::DefaultExt, a::A, s::S, p::SIPProblem) where {A <: AbstractSIPAlgo, S <: AbstractSubproblemType} + model = Model(get_sip_optimizer(t,a,s)) + for (k,v) in get_sip_kwargs(s,p) + MOI.set(model, MOI.RawParameter(String(k)), v) + end + vL, vU, nv = get_bnds(s,p) + @variable(model, vL[i] <= v[i=1:nv] <= vU[i]) + return model, v +end +function build_model(t::ExtensionType, a::A, s::S, p::SIPProblem) where {A <: AbstractSIPAlgo, S <: AbstractSubproblemType} + build_model(DefaultExt(), s, p) +end + +### +### General set tolerances +### +function set_tolerance_inner!(t::DefaultExt, alg, s, m::JuMP.Model, abs_tol::Float64) + optimizer_name = JuMP.solver_name(m) + if optimizer_name === "EAGO: Easy Advanced Global Optimization" + set_optimizer_attribute(m, "absolute_tolerance", abs_tol) + elseif optimizer_name === "SCIP" + set_optimizer_attribute(m, "limits/absgap", abs_tol) + elseif optimizer_name === "Alpine" + set_optimizer_attribute(m, "absgap", abs_tol) + elseif optimizer_name === "BARON" + set_optimizer_attribute(m, "EpsA", abs_tol) + elseif optimizer_name === "GAMS" + set_optimizer_attribute(m, "OptCA", abs_tol) + else + error("A custom set_tolerance! function for solver = $optimizer_name + specified for use with subproblem = $s in algorithm = $alg with + extension = $t has not been defined and the selected solver is + not support by default. Please open an issue requesting this feature + at the following link https://github.com/PSORLab/EAGO.jl/issues. + Extending the EAGO.set_tolerance! with a custom extension type + will resolve this issue.") + end + return nothing +end +function set_tolerance!(t::DefaultExt, alg::AbstractSIPAlgo, s::S, m::JuMP.Model, + sr::SIPSubResult, i::Int) where {S <: AbstractSubproblemType} + return nothing +end +function set_tolerance!(t::ExtensionType, alg::A, s::S, m::JuMP.Model, + sr::SIPSubResult, i::Int) where {A <: AbstractSIPAlgo, + S <: AbstractSubproblemType} + set_tolerance!(t, alg, s, m, sr, i) +end + +### +### General get discretation set +### +function get_disc_set(t::DefaultExt, alg::AbstractSIPAlgo, s::S, sr::SIPProblem, i::Int) where {S <: AbstractSubproblemType} + return Vector{Float64}[] +end +function get_disc_set(t::ExtensionType, alg::AbstractSIPAlgo, s::S, sr::SIPProblem, i::Int) where {S <: AbstractSubproblemType} + get_disc_set(DefaultExt(), alg, s, p, i) +end + +### +### Add constraints solely on uncertainty +### +function add_uncertainty_constraint!(m::JuMP.Model, prob::SIPProblem) + #if !isnothing(model.polyhedral_uncertainty_set) + #@constraint(model, ) + #end + #if !isnothing(model.ellipsodial_uncertainty_set) + #@constraint(model, ) + #end + return nothing +end + +for (p, s) in ((:LowerLevel1,:lbd), (:LowerLevel2, :ubd), (:LowerLevel3,:res)) + @eval function get_xbar(t::DefaultExt, alg::A, s::$p, sr::SIPSubResult) where {A <: AbstractSIPAlgo} + sr.$s.sol + end +end + +function llp_check(islocal::Bool, t::MOI.TerminationStatusCode, r::MOI.ResultStatusCode) + valid, feasible = is_globally_optimal(t, r) + if islocal && ((t != MOI.LOCALLY_SOLVED) && (t != MOI.ALMOST_LOCALLY_SOLVED)) + error("Lower problem did not solve to local optimality.") + elseif !valid + error("Error in lower level problem. Termination status = $t, primal status = $r.") + end + return feasible +end + +""" + sip_llp! + +Solves the lower level problem for the ith-SIP used with extension `t::EAGO.ExtensionType` +in algorithm `a::AbstractSIPAlgo` in subproblem `s::AbstractSubproblemType` via +the command `sip_llp!(t::ExtensionType, a::AbstractSIPAlgo, s::AbstractSubproblemType, ..., i, tol)`. +""" +function sip_llp!(t::DefaultExt, alg::A, s::S, result::SIPResult, + sr::SIPSubResult, prob::SIPProblem, cb::SIPCallback, + i::Int64, tol::Float64 = -Inf) where {A <: AbstractSIPAlgo, S <: AbstractSubproblemType} + + # build the model + m, p = build_model(t, alg, s, prob) + set_tolerance!(t, alg, s, m, sr, i) + + # define the objective + xbar = get_xbar(t, alg, s, sr) + g(p...) = cb.gSIP[i](xbar, p) + register(m, :g, prob.np, g, autodiff=true) + if isone(prob.np) + nl_obj = :(-g($(p[1]))) + else + nl_obj = Expr(:call) + push!(nl_obj.args, :g) + for i in 1:prob.np + push!(nl_obj.args, p[i]) + end + nl_obj = :(-$nl_obj) + end + set_NL_objective(m, MOI.MIN_SENSE, nl_obj) + + # add uncertainty constraints + add_uncertainty_constraint!(m, prob) + + # optimize model and check status + JuMP.optimize!(m) + tstatus = JuMP.termination_status(m) + rstatus = JuMP.primal_status(m) + feas = llp_check(prob.local_solver, tstatus, rstatus) + + # fill buffer with subproblem result info + psol = JuMP.value.(p) + load!(s, sr, feas, -JuMP.objective_value(m), -JuMP.objective_bound(m), psol) + result.solution_time += MOI.get(m, MOI.SolveTime()) + + return nothing +end +function sip_llp!(t::ExtensionType, alg::A, s::S, result::SIPResult, + sr::SIPSubResult, prob::SIPProblem, cb::SIPCallback, + i::Int64) where {A <: AbstractSIPAlgo, S <: AbstractSubproblemType} + sip_llp!(DefaultSubproblem(), s, result, sr, prob, cb, i) +end + +""" + sip_bnd! + +Solves the bounding problem for the ith-SIP used with extension `t::EAGO.ExtensionType` +in algorithm `a::AbstractSIPAlgo` in subproblem `s::AbstractSubproblemType` via +the command `sip_bnd!(t::ExtensionType, a::AbstractSIPAlgo, s::AbstractSubproblemType, ..., i, tol)`. +""" +function sip_bnd!(t::ExtensionType, alg::A, s::S, sr::SIPSubResult, result::SIPResult, + prob::SIPProblem, cb::SIPCallback) where {A <: AbstractSIPAlgo, + S <: AbstractSubproblemType} + sip_bnd!(DefaultExt(), alg, s, sr, result, prob, cb) +end +function sip_bnd!(t::DefaultExt, alg::A, s::S, sr::SIPSubResult, result::SIPResult, + prob::SIPProblem, cb::SIPCallback) where {A <: AbstractSIPAlgo, + S <: AbstractSubproblemType} + + # create JuMP model + m, x = build_model(t, alg, s, prob) + + for i = 1:prob.nSIP + ϵ_g = get_eps(s, sr, i) + disc_set = get_disc_set(t, alg, s, sr, i) + for j = 1:length(disc_set) + gi = Symbol("g$i$j") + g(x...) = cb.gSIP[i](x, disc_set[j]) + register(m, gi, prob.nx, g, autodiff=true) + gic = Expr(:call) + push!(gic.args, gi) + for i in 1:prob.nx + push!(gic.args, x[i]) + end + JuMP.add_NL_constraint(m, :($gic + $ϵ_g <= 0)) + end + end + + # define the objective + obj(x...) = cb.f(x) + register(m, :obj, prob.nx, obj, autodiff=true) + if isone(prob.nx) + nl_obj = :(obj($(x[1]))) + else + nl_obj = Expr(:call) + push!(nl_obj.args, :obj) + for i in 1:prob.nx + push!(nl_obj.args, x[i]) + end + end + set_NL_objective(m, MOI.MIN_SENSE, nl_obj) + + # optimize model and check status + JuMP.optimize!(m) + t_status = JuMP.termination_status(m) + r_status = JuMP.primal_status(m) + feas = bnd_check(prob.local_solver, t_status, r_status) + + # fill buffer with subproblem result info + load!(s, sr, feas, JuMP.objective_value(m), JuMP.objective_bound(m), JuMP.value.(x)) + result.solution_time += MOI.get(m, MOI.SolveTime()) + + return nothing +end + +""" + sip_res! + +Solves the restriction problem for extension `t::EAGO.ExtensionType` +in algorithm `a::AbstractSIPAlgo` in subproblem `s::AbstractSubproblemType` via +the command `sip_res!(t::ExtensionType, a::AbstractSIPAlgo, ...)`. +""" +function sip_res!(t::ExtensionType, alg::A, sr::SIPSubResult, result::SIPResult, + prob::SIPProblem, cb::SIPCallback) where {A <: AbstractSIPAlgo} + sip_res!(DefaultExt(), alg, sr, result, prob, cb) +end +function sip_res!(t::DefaultExt, alg::A, sr::SIPSubResult, result::SIPResult, + prob::SIPProblem, cb::SIPCallback) where {A <: AbstractSIPAlgo} + + # create JuMP model & variables + s = ResProblem() + m, x = build_model(t, alg, s, prob) + @variable(m, η) + + # add discretized semi-infinite constraint + for i = 1:prob.nSIP + disc_set = get_disc_set(t, alg, s, sr, i) + for j = 1:length(disc_set) + gi = Symbol("g$i$j") + g(x...) = cb.gSIP[i](x, disc_set[j]) + register(m, gi, prob.nx, g, autodiff=true) + gic = Expr(:call) + push!(gic.args, gi) + for i in 1:prob.nx + push!(gic.args, x[i]) + end + gip = Expr(:call) + push!(gip.args, :+) + push!(gip.args, gic) + push!(gip.args, η) + JuMP.add_NL_constraint(m, :($gip <= 0)) + end + end + + # add epigraph reformulated objective + obj(x...) = cb.f(x) + register(m, :f, prob.nx, obj, autodiff=true) + if isfinite(sr.fRes) + if isone(prob.nx) + nl_obj = :(f($(x[1]))) + else + nl_obj = Expr(:call) + push!(nl_obj.args, :f) + for i in 1:prob.nx + push!(nl_obj.args, x[i]) + end + end + JuMP.add_NL_constraint(m, :($nl_obj + $(sr.fRes) <= 0)) + end + + # define the objective + @objective(m, Min, -η) + + # optimize model and check status + JuMP.optimize!(m) + t_status = JuMP.termination_status(m) + r_status = JuMP.primal_status(m) + feas = llp_check(prob.local_solver, t_status, r_status) + + # fill buffer with subproblem result info + load!(s, sr, feas, JuMP.objective_value(m), JuMP.objective_bound(m), JuMP.value.(x)) + result.solution_time += MOI.get(m, MOI.SolveTime()) + + return nothing +end + +# get optimizer for use in subproblems +function get_sip_optimizer(t::DefaultExt, alg::A, s::S) where {A<:AbstractSIPAlgo, S<:AbstractSubproblemType} + return EAGO.Optimizer +end + +""" + get_sip_optimizer + +Specifices the optimizer to be used in extension `t::EAGO.ExtensionType` with +algorithm `alg::AbstractSIPAlgo` in subproblem `s::AbstractSubproblemType` via the +command `get_sip_optimizer(t::ExtensionType, alg::AbstractSIPAlgo, s::AbstractSubproblemType)`. +""" +function get_sip_optimizer(t::ExtensionType, alg::A, s::AbstractSubproblemType) where {A <: AbstractSIPAlgo} + return get_sip_optimizer(DefaultExt(), s) +end + +# Printing +function print_int!(verb::Int, prob::SIPProblem, result::SIPResult, r::Float64) + + k = result.iteration_number + lbd = result.lower_bound + ubd = result.upper_bound + + if (prob.verbosity == 1 || prob.verbosity == 2) + + # prints header line every hdr_intv times + if (mod(k, prob.header_interval) == 0 || k == 1) + println("| Iteration | Lower Bound | Upper Bound | r | Gap | Ratio |") + end + + # prints iteration summary every prnt_intv times + if mod(k, prob.print_interval) == 0 + + print_str = "| " + + max_len = 15 + temp_str = string(k) + len_str = length(temp_str) + print_str *= (" "^(max_len - len_str))*temp_str*" | " + + max_len = 15 + lower_adj = lbd + temp_str = string(round(lower_adj, digits = 6)) + len_str = length(temp_str) + print_str *= (" "^(max_len - len_str))*temp_str*" | " + + max_len = 15 + upper_adj = ubd + temp_str = string(round(upper_adj, digits = 6)) + len_str = length(temp_str) + print_str *= (" "^(max_len - len_str))*temp_str*" | " + + max_len =15 + temp_str = string(round(r, digits = 5)) + len_str = length(temp_str) + print_str *= (" "^(max_len - len_str))*temp_str*" | " + + max_len = 15 + temp_str = string(round((ubd-lbd), digits = 5)) + len_str = length(temp_str) + print_str *= (" "^(max_len - len_str))*temp_str*" | " + + max_len = 18 + temp_str = string(round((ubd-lbd)/abs(ubd), digits = 6)) + len_str = length(temp_str) + print_str *= (" "^(max_len - len_str))*temp_str*" |" + + println(print_str) + end + end + return nothing +end + +function summary_inner!(verb::Int64, val::Float64, x::Vector{Float64}, + feas::Bool, desc::String) + (verb == 2 || verb == 1) && println("solved $desc: ", val, " ", x, " ", feas) + return nothing +end + +for (typ, fd) in SUBPROB_SYM + @eval function print_summary!(s::$typ, v::Int64, r::SIPSubResult, i::Int = 0) + if i == 0 + summary_inner!(v, r.$fd.obj_val, r.$fd.sol, r.$fd.feas, "$s ") + else + summary_inner!(v, r.$fd.obj_val, r.$fd.sol, r.$fd.feas, "$s($i) ") + end + end +end + +# Check convergence +function check_convergence(result::SIPResult, atol::Float64, verb::Int64) + if abs(result.upper_bound - result.lower_bound) < atol + (verb == 2 || verb == 1) && println("Algorithm Converged") + return true + end + return false +end + +get_bnds(s::Union{LowerLevel1,LowerLevel2,LowerLevel3}, p::SIPProblem) = p.p_l, p.p_u, p.np +get_bnds(s::Union{LowerProblem,UpperProblem, ResProblem}, p::SIPProblem) = p.x_l, p.x_u, p.nx + +function bnd_check(is_local::Bool, t::MOI.TerminationStatusCode, + r::MOI.ResultStatusCode) + valid_result, is_feasible = is_globally_optimal(t, r) + if !(valid_result && is_feasible) && !is_local + error("Lower problem did not solve to global optimality. + Termination status = $t. Primal status = $r") + elseif !(valid_result && is_feasible) && is_local && + !((t == MOI.LOCALLY_SOLVED) || (t == MOI.ALMOST_LOCALLY_SOLVED)) + error("Lower problem did not solve to local optimality.") + end + return is_feasible +end diff --git a/src/eago_semiinfinite/types.jl b/src/eago_semiinfinite/types.jl new file mode 100644 index 00000000..1a30b6ee --- /dev/null +++ b/src/eago_semiinfinite/types.jl @@ -0,0 +1,216 @@ +# Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. +# This code is licensed under MIT license (see LICENSE.md for full details) +############################################################################# +# EAGO +# A development environment for robust and global optimization +# See https://github.com/PSORLab/EAGO.jl +############################################################################# +# # src/eago_semiinfinite/types.jl +# Defines intermediate types used by SIP routines. +############################################################################# + +abstract type AbstractSIPAlgo end + +abstract type AbstractSubproblemType end +struct LowerLevel1 <: AbstractSubproblemType end +struct LowerLevel2 <: AbstractSubproblemType end +struct LowerLevel3 <: AbstractSubproblemType end +struct LowerProblem <: AbstractSubproblemType end +struct UpperProblem <: AbstractSubproblemType end +struct ResProblem <: AbstractSubproblemType end + +for ptype in (LowerLevel1, LowerLevel2, LowerLevel3, + LowerProblem, UpperProblem, ResProblem) + pstring = String(Symbol(ptype))[6:end] + @eval Base.show(io::IO, x::$ptype) = print(io, $pstring) + @eval Base.show(io::IO, m::MIME"text/plain", x::$ptype) = print(io, $pstring) +end + +""" + SIPResult + +Structure storing the results of the SIPres algorithm. +""" +mutable struct SIPResult + iteration_number::Int64 + res_iteration_number::Int64 + upper_bound::Float64 + lower_bound::Float64 + feasibility::Bool + xsol::Vector{Float64} + psol::Vector{Float64} + solution_time::Float64 +end +SIPResult() = SIPResult(1, 1, Inf, -Inf, true, Float64[], Float64[], 0.0) +SIPResult(nx::Int, np::Int) = SIPResult(1, 1, Inf, -Inf, true, zeros(nx), zeros(np), 0.0) + + +""" + SIPProblem + +Structure storing problem information for the solution routine. +""" +Base.@kwdef mutable struct SIPProblem + x_l::Vector{Float64} = Float64[] + x_u::Vector{Float64} = Float64[] + p_l::Vector{Float64} = Float64[] + p_u::Vector{Float64} = Float64[] + np::Int = 0 + nSIP::Int = 0 + nx::Int = 0 + + abs_tolerance::Float64 = 1E-3 + cons_tolerance::Float64 = 1E-3 + iteration_limit::Int = 100 + res_iteration_limit::Int = 3 + initial_eps_g::Float64 = 1.0 + initial_r::Float64 = 2.0 + local_solver::Bool = false + + return_hist::Bool = false + header_interval::Int = 20 + print_interval::Int = 1 + verbosity::Int = 1 + + kwargs_llp1::Dict{String,Any} = Dict{String,Any}() + kwargs_llp2::Dict{String,Any} = Dict{String,Any}() + kwargs_llp3::Dict{String,Any} = Dict{String,Any}() + kwargs_lbd::Dict{String,Any} = Dict{String,Any}() + kwargs_ubd::Dict{String,Any} = Dict{String,Any}() + kwargs_res::Dict{String,Any} = Dict{String,Any}() +end + +get_sip_kwargs(s::LowerLevel1, p::SIPProblem) = p.kwargs_llp1 +get_sip_kwargs(s::LowerLevel2, p::SIPProblem) = p.kwargs_llp2 +get_sip_kwargs(s::LowerLevel3, p::SIPProblem) = p.kwargs_llp3 +get_sip_kwargs(s::LowerProblem, p::SIPProblem) = p.kwargs_lbd +get_sip_kwargs(s::UpperProblem, p::SIPProblem) = p.kwargs_ubd +get_sip_kwargs(s::ResProblem, p::SIPProblem) = p.kwargs_res + +function SIPProblem(x_l::Vector{Float64}, x_u::Vector{Float64}, + p_l::Vector{Float64}, p_u::Vector{Float64}, + gSIP, kwargs) + + prob = SIPProblem() + + for key in keys(kwargs) + string_key = String(key) + if string_key[1:3] === "llp1" + prob.kwargs_llp1[string_key[4:end]] = kwargs[key] + elseif string_key[1:3] === "llp2" + prob.kwargs_llp2[string_key[4:end]] = kwargs[key] + elseif string_key[1:3] === "llp3" + prob.kwargs_llp3[string_key[4:end]] = kwargs[key] + elseif string_key[1:3] === "lbd" + prob.kwargs_lbd[string_key[4:end]] = kwargs[key] + elseif string_key[1:3] === "ubd" + prob.kwargs_ubd[string_key[4:end]] = kwargs[key] + elseif string_key[1:3] === "res" + prob.kwargs_res[string_key[4:end]] = kwargs[key] + elseif key in fieldnames(SIPProblem) + setfield!(prob, key, kwargs[key]) + else + error("Keyword = `$string_key` is not supported by SIPProblem. Use + `llp1_$string_key` to pass this argument to the optimizer used by + the first lower level problem, `lbd_$string_key` to pass the + keyword to the optimizer used in the lower bounding problem + and so on...") + end + end + + (prob.initial_r <= 1.0) && error("initial_r must be greater than 1") + (prob.initial_eps_g <= 0.0) && error("eps_g must be greater than 0") + + prob.np = length(p_l) + prob.nx = length(x_l) + prob.nSIP = length(gSIP) + append!(prob.x_l, x_l) + append!(prob.x_u, x_u) + append!(prob.p_l, p_l) + append!(prob.p_u, p_u) + + return prob +end + +struct SIPCallback + f + gSIP +end + +mutable struct SubProblemInfo + sol::Vector{Float64} + obj_val::Float64 + obj_bnd::Float64 + feas::Bool + tol::Vector{Float64} +end +function SubProblemInfo(nd::Int, ng::Int, tol::Float64) + SubProblemInfo(zeros(nd), 0.0, 0.0, false, fill(tol, ng)) +end + +""" + SIPBuffer + +Hold objective value, solution, discretization set, and feasibility status of +each subproblem encountered by SIP algorithm. +""" +Base.@kwdef mutable struct SIPSubResult + fRes::Float64 = Inf + lbd::SubProblemInfo + ubd::SubProblemInfo + res::SubProblemInfo + llp1::SubProblemInfo + llp2::SubProblemInfo + llp3::SubProblemInfo + r_g::Float64 = 5.0 + r_l::Float64 = 5.0 + r_u::Float64 = 5.0 + eps_g::Vector{Float64} = Float64[] + eps_l::Vector{Float64} = Float64[] + eps_u::Vector{Float64} = Float64[] + disc_l_buffer::Vector{Float64} = Float64[] + disc_u_buffer::Vector{Float64} = Float64[] + disc_l::Vector{Vector{Vector{Float64}}} = Vector{Vector{Float64}}[] + disc_u::Vector{Vector{Vector{Float64}}} = Vector{Vector{Float64}}[] +end +function SIPSubResult(nx::Int, np::Int, ng::Int, tol::Float64) + buffer = SIPSubResult(lbd = SubProblemInfo(nx, 1, tol), + ubd = SubProblemInfo(nx, 1, tol), + res = SubProblemInfo(nx, 1, tol), + llp1 = SubProblemInfo(np, ng, tol), + llp2 = SubProblemInfo(np, ng, tol), + llp3 = SubProblemInfo(np, ng, tol)) + append!(buffer.eps_g, fill(1E-3, ng)) + append!(buffer.eps_l, fill(1E-3, ng)) + append!(buffer.eps_u, fill(1E-3, ng)) + append!(buffer.disc_l_buffer, zeros(np)) + append!(buffer.disc_u_buffer, zeros(np)) + for _ in 1:ng + push!(buffer.disc_l, Vector{Float64}[]) + push!(buffer.disc_u, Vector{Float64}[]) + end + return buffer +end + +get_eps(::LowerProblem, sr::SIPSubResult, i::Int) = 0.0 +get_eps(::ResProblem, sr::SIPSubResult, i::Int) = 0.0 +get_eps(::UpperProblem, sr::SIPSubResult, i::Int) = sr.eps_g[i] + +const SUBPROB_SYM = Dict{Symbol,Symbol}(:LowerProblem => :lbd, + :UpperProblem => :ubd, + :ResProblem => :res, + :LowerLevel1 => :llp1, + :LowerLevel2 => :llp2, + :LowerLevel3 => :llp3) + +for (typ, fd) in SUBPROB_SYM + @eval function load!(::$typ, sr::SIPSubResult, feas::Bool, val::Float64, + bnd::Float64, x::Vector{Float64}) + + sr.$fd.feas = feas + sr.$fd.obj_val = val + sr.$fd.obj_bnd = bnd + sr.$fd.sol .= x + return nothing + end +end diff --git a/test/optimizer.jl b/test/optimizer.jl index 1450a1a1..be3517bd 100644 --- a/test/optimizer.jl +++ b/test/optimizer.jl @@ -621,12 +621,22 @@ end optimize!(m) @test isapprox(JuMP.objective_value(m), 1.0652212400578724, atol=1E-3) - m = Model(EAGO.Optimizer) + m = Model(optimizer_with_attributes(EAGO.Optimizer, "verbosity" => 0)) xL = [-2.0 0.0]; xU = [2.0 4.0] @variable(m, xL[i] <= x[i=1:2] <= xU[i]) @NLobjective(m, Max, x[2]^2 + x[1]^2 + x[1]*x[2]) optimize!(m) @test isapprox(JuMP.objective_value(m), 27.99971055498271, atol=1E-3) + + + m = Model(optimizer_with_attributes(EAGO.Optimizer, "verbosity" => 0)) + pL = [0.5, 0.8401, 0.5] + pU = [1.0, 1.0, 2.0] + @variable(m, pL[i] <= p[i=1:3] <= pU[i]) + @NLobjective(m, Min,(560.0 - p[3]*(1 - 0.84/p[2]))^(-p[1]*p[2])) + JuMP.optimize!(m) + obj_val = objective_value(m) + @test isapprox(JuMP.objective_value(m), 0.0018, atol=1E-3) end @testset "Empty Evaluator" begin diff --git a/test/semiinfinite.jl b/test/semiinfinite.jl index f5a3b84c..e297f2f9 100644 --- a/test/semiinfinite.jl +++ b/test/semiinfinite.jl @@ -1,21 +1,50 @@ -@testset "Explicit SIP Routine" begin +@testset "SIP Res" begin # Define semi-infinite program f(x) = (1/3)*x[1]^2 + x[2]^2 + x[1]/2 gSIP(x,p) = (1.0 - (x[1]^2)*(p[1]^2))^2 - x[1]*p[1]^2 - x[2]^2 + x[2] - x_l = [-1000.0, -1000.0] - x_u = [1000.0, 1000.0] - p_l = [0.0] - p_u = [1.0] - - # Create optimizer for use in solving SIP - opt = optimizer_with_attributes(EAGO.Optimizer, "cut_max_iterations" => 0, - "subgrad_tighten" => false, - "absolute_tolerance" => 1E-4, - "relative_tolerance" => 1E-4, - "verbosity" => 0) - m = JuMP.Model(opt) - sip_result = explicit_sip_solve(x_l, x_u, p_l, p_u, f, [gSIP], sip_absolute_tolerance = 1E-3) + x_l = Float64[-1000.0, -1000.0] + x_u = Float64[1000.0, 1000.0] + p_l = Float64[0.0] + p_u = Float64[1.0] + + sip_result = sip_solve(SIPRes(), x_l, x_u, p_l, p_u, f, Any[gSIP], abs_tolerance = 1E-3) + + @test isapprox(sip_result.lower_bound, 0.19446619886176916, atol = 1E-3) + @test isapprox(sip_result.upper_bound, 0.19500611503848964, atol = 1E-3) + @test isapprox(sip_result.xsol[1], -0.7500000115038946, atol = 1E-2) + @test isapprox(sip_result.xsol[2], -0.6184706298867955, atol = 1E-2) +end + +@testset "SIP ResRev" begin + # Define semi-infinite program + f(x) = (1/3)*x[1]^2 + x[2]^2 + x[1]/2 + gSIP(x,p) = (1.0 - (x[1]^2)*(p[1]^2))^2 - x[1]*p[1]^2 - x[2]^2 + x[2] + + x_l = Float64[-1000.0, -1000.0] + x_u = Float64[1000.0, 1000.0] + p_l = Float64[0.0] + p_u = Float64[1.0] + + sip_result = sip_solve(SIPResRev(), x_l, x_u, p_l, p_u, f, Any[gSIP], abs_tolerance = 1E-3) + + @test isapprox(sip_result.lower_bound, 0.19446619886176916, atol = 1E-3) + @test isapprox(sip_result.upper_bound, 0.19500611503848964, atol = 1E-3) + @test isapprox(sip_result.xsol[1], -0.7500000115038946, atol = 1E-2) + @test isapprox(sip_result.xsol[2], -0.6184706298867955, atol = 1E-2) +end + +@testset "SIP Hybrid" begin + # Define semi-infinite program + f(x) = (1/3)*x[1]^2 + x[2]^2 + x[1]/2 + gSIP(x,p) = (1.0 - (x[1]^2)*(p[1]^2))^2 - x[1]*p[1]^2 - x[2]^2 + x[2] + + x_l = Float64[-1000.0, -1000.0] + x_u = Float64[1000.0, 1000.0] + p_l = Float64[0.0] + p_u = Float64[1.0] + + sip_result = sip_solve(SIPHybrid(), x_l, x_u, p_l, p_u, f, Any[gSIP], abs_tolerance = 1E-3) @test isapprox(sip_result.lower_bound, 0.19446619886176916, atol = 1E-3) @test isapprox(sip_result.upper_bound, 0.19500611503848964, atol = 1E-3)