From ddf919aae32e0d951193da1282929c660ce8501b Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Tue, 15 Aug 2023 18:19:31 +0000 Subject: [PATCH] build based on 27d548f --- stable | 2 +- v4 | 1 + v4.0 | 1 + v4.0.0/assets/documenter.js | 331 ++++++++++++++++++ v4.0.0/assets/logo.png | Bin 0 -> 110671 bytes v4.0.0/assets/search.js | 267 +++++++++++++++ v4.0.0/assets/themes/documenter-dark.css | 7 + v4.0.0/assets/themes/documenter-light.css | 9 + v4.0.0/assets/themeswap.js | 66 ++++ v4.0.0/assets/warner.js | 49 +++ v4.0.0/chebs.svg | 141 ++++++++ v4.0.0/extending/index.html | 161 +++++++++ v4.0.0/extensions/index.html | 13 + v4.0.0/index.html | 388 ++++++++++++++++++++++ v4.0.0/polyfit.svg | 139 ++++++++ v4.0.0/polynomials/chebyshev/index.html | 25 ++ v4.0.0/polynomials/polynomial/index.html | 136 ++++++++ v4.0.0/rational_function.svg | 162 +++++++++ v4.0.0/reference/index.html | 131 ++++++++ v4.0.0/search/index.html | 2 + v4.0.0/search_index.js | 3 + v4.0.0/siteinfo.js | 1 + versions.js | 3 +- 23 files changed, 2036 insertions(+), 2 deletions(-) create mode 120000 v4 create mode 120000 v4.0 create mode 100644 v4.0.0/assets/documenter.js create mode 100644 v4.0.0/assets/logo.png create mode 100644 v4.0.0/assets/search.js create mode 100644 v4.0.0/assets/themes/documenter-dark.css create mode 100644 v4.0.0/assets/themes/documenter-light.css create mode 100644 v4.0.0/assets/themeswap.js create mode 100644 v4.0.0/assets/warner.js create mode 100644 v4.0.0/chebs.svg create mode 100644 v4.0.0/extending/index.html create mode 100644 v4.0.0/extensions/index.html create mode 100644 v4.0.0/index.html create mode 100644 v4.0.0/polyfit.svg create mode 100644 v4.0.0/polynomials/chebyshev/index.html create mode 100644 v4.0.0/polynomials/polynomial/index.html create mode 100644 v4.0.0/rational_function.svg create mode 100644 v4.0.0/reference/index.html create mode 100644 v4.0.0/search/index.html create mode 100644 v4.0.0/search_index.js create mode 100644 v4.0.0/siteinfo.js diff --git a/stable b/stable index 7fcf223e..f684230d 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -v3.2.13 \ No newline at end of file +v4.0.0 \ No newline at end of file diff --git a/v4 b/v4 new file mode 120000 index 00000000..f684230d --- /dev/null +++ b/v4 @@ -0,0 +1 @@ +v4.0.0 \ No newline at end of file diff --git a/v4.0 b/v4.0 new file mode 120000 index 00000000..f684230d --- /dev/null +++ b/v4.0 @@ -0,0 +1 @@ +v4.0.0 \ No newline at end of file diff --git a/v4.0.0/assets/documenter.js b/v4.0.0/assets/documenter.js new file mode 100644 index 00000000..6adfbbbf --- /dev/null +++ b/v4.0.0/assets/documenter.js @@ -0,0 +1,331 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/languages/julia.min', + 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/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.13.24/contrib/auto-render.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min', + 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min', + 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min', + 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min', + 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/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($) { +$(document).ready(function() { + hljs.highlightAll(); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require([], function() { +function addCopyButtonCallbacks() { + for (const el of document.getElementsByTagName("pre")) { + const button = document.createElement("button"); + button.classList.add("copy-button", "fas", "fa-copy"); + el.appendChild(button); + + const success = function () { + button.classList.add("success", "fa-check"); + button.classList.remove("fa-copy"); + }; + + const failure = function () { + button.classList.add("error", "fa-times"); + button.classList.remove("fa-copy"); + }; + + button.addEventListener("click", function () { + copyToClipboard(el.innerText).then(success, failure); + + setTimeout(function () { + button.classList.add("fa-copy"); + button.classList.remove("success", "fa-check", "fa-times"); + }, 5000); + }); + } +} + +function copyToClipboard(text) { + // clipboard API is only available in secure contexts + if (window.navigator && window.navigator.clipboard) { + return window.navigator.clipboard.writeText(text); + } else { + return new Promise(function (resolve, reject) { + try { + const el = document.createElement("textarea"); + el.textContent = text; + el.style.position = "fixed"; + el.style.opacity = 0; + document.body.appendChild(el); + el.select(); + document.execCommand("copy"); + + resolve(); + } catch (err) { + reject(err); + } finally { + document.body.removeChild(el); + } + }); + } +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", addCopyButtonCallbacks); +} else { + addCopyButtonCallbacks(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +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); + }) + } else { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = $("html").hasClass(`theme--${e.value}`); + }) + } + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function() { + // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the + // siteinfo.js file, we just return immediately and not display the version selector. + if (typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === 'boolean' && DOCUMENTER_VERSION_SELECTOR_DISABLED) { + return; + } + + 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/v4.0.0/assets/logo.png b/v4.0.0/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..beb71ce60b927c9116d7ab3d46d0081bcb323b5e GIT binary patch literal 110671 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
$e5oX21wtS=x{OaLS+xPJ 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

y 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 D + // 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, only, 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', + '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, page: e.page} + }) + + $(function(){ + searchresults = $('#documenter-search-results'); + searchinfo = $('#documenter-search-info'); + searchbox = $('#documenter-search-query'); + searchform = $('.docs-search'); + sidebar = $('.docs-sidebar'); + 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: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["title"], + boost: 10, + usePipeline: true, + 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) + if (data.category != "page"){ + cat = $('('+data.category+', '+data.page+')') + } else { + 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) + + // Disable enter-key form submission for the searchbox on the search page + // and just re-run search rather than refresh the whole page. + searchform.keypress( + function(event){ + if (event.which == '13') { + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + update_search_box(); + event.preventDefault(); + } + } + ); + + 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/v4.0.0/assets/themes/documenter-dark.css b/v4.0.0/assets/themes/documenter-dark.css new file mode 100644 index 00000000..c94a294d --- /dev/null +++ b/v4.0.0/assets/themes/documenter-dark.css @@ -0,0 +1,7 @@ +@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}html.theme--documenter-dark .tabs,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 .breadcrumb,html.theme--documenter-dark .file,html.theme--documenter-dark .button,.is-unselectable,html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after,html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);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 .admonition:not(:last-child),html.theme--documenter-dark .tabs:not(:last-child),html.theme--documenter-dark .message:not(:last-child),html.theme--documenter-dark .list:not(:last-child),html.theme--documenter-dark .level:not(:last-child),html.theme--documenter-dark .breadcrumb:not(:last-child),html.theme--documenter-dark .highlight:not(:last-child),html.theme--documenter-dark .block:not(:last-child),html.theme--documenter-dark .title:not(:last-child),html.theme--documenter-dark .subtitle:not(:last-child),html.theme--documenter-dark .table-container:not(:last-child),html.theme--documenter-dark .table:not(:last-child),html.theme--documenter-dark .progress:not(:last-child),html.theme--documenter-dark .notification:not(:last-child),html.theme--documenter-dark .content:not(:last-child),html.theme--documenter-dark .box:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-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 .modal-close::before,html.theme--documenter-dark .delete::before,html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before{height:2px;width:50%}html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{height:50%;width:2px}html.theme--documenter-dark .modal-close:hover,html.theme--documenter-dark .delete:hover,html.theme--documenter-dark .modal-close:focus,html.theme--documenter-dark .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--documenter-dark .modal-close:active,html.theme--documenter-dark .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--documenter-dark .is-small.modal-close,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--documenter-dark .is-small.delete,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--documenter-dark .is-medium.modal-close,html.theme--documenter-dark .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--documenter-dark .is-large.modal-close,html.theme--documenter-dark .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--documenter-dark .control.is-loading::after,html.theme--documenter-dark .select.is-loading::after,html.theme--documenter-dark .loader,html.theme--documenter-dark .button.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}html.theme--documenter-dark .hero-video,html.theme--documenter-dark .modal-background,html.theme--documenter-dark .modal,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,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}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 .file-cta,html.theme--documenter-dark .file-name,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.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 .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 .file-cta:focus,html.theme--documenter-dark .file-name:focus,html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .button:focus,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 .is-focused.file-cta,html.theme--documenter-dark .is-focused.file-name,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,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.button,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 .file-cta:active,html.theme--documenter-dark .file-name:active,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .button:active,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,html.theme--documenter-dark .is-active.file-cta,html.theme--documenter-dark .is-active.file-name,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,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.button{outline:none}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],html.theme--documenter-dark .file-cta[disabled],html.theme--documenter-dark .file-name[disabled],html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--documenter-dark .button[disabled],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,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 .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark fieldset[disabled] .select select,html.theme--documenter-dark .select fieldset[disabled] select,html.theme--documenter-dark fieldset[disabled] .textarea,html.theme--documenter-dark fieldset[disabled] .input,html.theme--documenter-dark fieldset[disabled] #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 .button,html.theme--documenter-dark fieldset[disabled] .button{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:.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:.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:.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:.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:.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:.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:.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:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !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 Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","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{/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/}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 Medium",-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:"JuliaMono","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:#ececec;font-size:.875em;font-weight:normal;padding:.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:.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:.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:.75em;padding-right:.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:#fff;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:#fff;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-hovered{background-color:#000}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:#fff}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:#fff;color:#fff}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:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !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:#fff;box-shadow:none;color:#fff}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:#fff}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 #fff #fff !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:#fff}html.theme--documenter-dark .button.is-black:hover,html.theme--documenter-dark .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus,html.theme--documenter-dark .button.is-black.is-focused{border-color:transparent;color:#fff}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:#000;border-color:transparent;color:#fff}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:#fff;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:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !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:#fff}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 #fff #fff !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:#fff;color:#fff}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:#fff;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:#fff;box-shadow:none;color:#fff}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:#073;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:.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:.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:.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.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--documenter-dark .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--documenter-dark .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--documenter-dark .content ol.is-upper-roman:not([type]){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;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:.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:.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:#fff}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:#fff;color:#0a0a0a}html.theme--documenter-dark .notification.is-black{background-color:#0a0a0a;color:#fff}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:#fff}html.theme--documenter-dark .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--documenter-dark .progress.is-white::-ms-fill{background-color:#fff}html.theme--documenter-dark .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 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:.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:#fff;border-color:#fff;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:#fff}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:rgba(0,0,0,0)}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:rgba(0,0,0,0)}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:rgba(0,0,0,0)}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 .content kbd,html.theme--documenter-dark .content .tags kbd,html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--documenter-dark .tags .tag:not(:last-child),html.theme--documenter-dark .tags .content kbd:not(:last-child),html.theme--documenter-dark .content .tags kbd:not(:last-child),html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink: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 .content kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .docstring>section>a.docs-sourcelink: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 .content kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .docstring>section>a.docs-sourcelink: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 .content kbd,html.theme--documenter-dark .content .tags.is-centered kbd,html.theme--documenter-dark .tags.is-centered .docstring>section>a.docs-sourcelink{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 .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink: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 .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--documenter-dark .tags.has-addons .tag,html.theme--documenter-dark .tags.has-addons .content kbd,html.theme--documenter-dark .content .tags.has-addons kbd,html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--documenter-dark .tags.has-addons .tag: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),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink: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 .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .tag:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.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 .content kbd:not(body) .delete,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:0.25rem;margin-right:-0.375rem}html.theme--documenter-dark .tag.is-white:not(body),html.theme--documenter-dark .content kbd.is-white:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .tag.is-black:not(body),html.theme--documenter-dark .content kbd.is-black:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .tag.is-light:not(body),html.theme--documenter-dark .content kbd.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .tag.is-dark:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--documenter-dark .content .docstring>section>kbd:not(body){background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .tag.is-primary:not(body),html.theme--documenter-dark .content kbd.is-primary:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){background-color:#375a7f;color:#fff}html.theme--documenter-dark .tag.is-link:not(body),html.theme--documenter-dark .content kbd.is-link:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1abc9c;color:#fff}html.theme--documenter-dark .tag.is-info:not(body),html.theme--documenter-dark .content kbd.is-info:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#024c7d;color:#fff}html.theme--documenter-dark .tag.is-success:not(body),html.theme--documenter-dark .content kbd.is-success:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#008438;color:#fff}html.theme--documenter-dark .tag.is-warning:not(body),html.theme--documenter-dark .content kbd.is-warning:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ad8100;color:#fff}html.theme--documenter-dark .tag.is-danger:not(body),html.theme--documenter-dark .content kbd.is-danger:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .tag.is-normal:not(body),html.theme--documenter-dark .content kbd.is-normal:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.85em}html.theme--documenter-dark .tag.is-medium:not(body),html.theme--documenter-dark .content kbd.is-medium:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:15px}html.theme--documenter-dark .tag.is-large:not(body),html.theme--documenter-dark .content kbd.is-large:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .content kbd: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){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 .content kbd: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){margin-left:0.1875em;margin-right:-0.375em}html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child,html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}html.theme--documenter-dark .tag.is-delete:not(body),html.theme--documenter-dark .content kbd.is-delete:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::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.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--documenter-dark .tag.is-delete:not(body):hover,html.theme--documenter-dark .content kbd.is-delete:not(body):hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--documenter-dark .tag.is-delete:not(body):focus,html.theme--documenter-dark .content kbd.is-delete:not(body):focus,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1d2122}html.theme--documenter-dark .tag.is-delete:not(body):active,html.theme--documenter-dark .content kbd.is-delete:not(body):active,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#111414}html.theme--documenter-dark .tag.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--documenter-dark .content kbd.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-rounded: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:.75em}html.theme--documenter-dark .title sup,html.theme--documenter-dark .subtitle sup{font-size:.75em}html.theme--documenter-dark .title .tag,html.theme--documenter-dark .title .content kbd,html.theme--documenter-dark .content .title kbd,html.theme--documenter-dark .title .docstring>section>a.docs-sourcelink,html.theme--documenter-dark .subtitle .tag,html.theme--documenter-dark .subtitle .content kbd,html.theme--documenter-dark .content .subtitle kbd,html.theme--documenter-dark .subtitle .docstring>section>a.docs-sourcelink{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:.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:.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 .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#1f2424;border-color:#5e6d6f;border-radius:.4em;color:#dbdee0}html.theme--documenter-dark .select select::-moz-placeholder,html.theme--documenter-dark .textarea::-moz-placeholder,html.theme--documenter-dark .input::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select::-webkit-input-placeholder,html.theme--documenter-dark .textarea::-webkit-input-placeholder,html.theme--documenter-dark .input::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:-moz-placeholder,html.theme--documenter-dark .textarea:-moz-placeholder,html.theme--documenter-dark .input:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:-ms-input-placeholder,html.theme--documenter-dark .textarea:-ms-input-placeholder,html.theme--documenter-dark .input:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:hover,html.theme--documenter-dark .textarea:hover,html.theme--documenter-dark .input:hover,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:hover,html.theme--documenter-dark .select select.is-hovered,html.theme--documenter-dark .is-hovered.textarea,html.theme--documenter-dark .is-hovered.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#8c9b9d}html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1abc9c;box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}html.theme--documenter-dark .select select[disabled]::-moz-placeholder,html.theme--documenter-dark .textarea[disabled]::-moz-placeholder,html.theme--documenter-dark .input[disabled]::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-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{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-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{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-moz-placeholder,html.theme--documenter-dark .textarea[disabled]:-moz-placeholder,html.theme--documenter-dark .input[disabled]:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-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{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder,html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder,html.theme--documenter-dark .input[disabled]:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-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{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);max-width:100%;width:100%}html.theme--documenter-dark .textarea[readonly],html.theme--documenter-dark .input[readonly],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--documenter-dark .is-white.textarea,html.theme--documenter-dark .is-white.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--documenter-dark .is-white.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-white.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-white.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-white.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .is-black.textarea,html.theme--documenter-dark .is-black.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--documenter-dark .is-black.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-black.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-black.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-black.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .is-light.textarea,html.theme--documenter-dark .is-light.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#ecf0f1}html.theme--documenter-dark .is-light.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-light.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-light.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-light.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .is-dark.textarea,html.theme--documenter-dark .content kbd.textarea,html.theme--documenter-dark .is-dark.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--documenter-dark .content kbd.input{border-color:#282f2f}html.theme--documenter-dark .is-dark.textarea:focus,html.theme--documenter-dark .content kbd.textarea:focus,html.theme--documenter-dark .is-dark.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--documenter-dark .content kbd.input:focus,html.theme--documenter-dark .is-dark.is-focused.textarea,html.theme--documenter-dark .content kbd.is-focused.textarea,html.theme--documenter-dark .is-dark.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .content kbd.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--documenter-dark .is-dark.textarea:active,html.theme--documenter-dark .content kbd.textarea:active,html.theme--documenter-dark .is-dark.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--documenter-dark .content kbd.input:active,html.theme--documenter-dark .is-dark.is-active.textarea,html.theme--documenter-dark .content kbd.is-active.textarea,html.theme--documenter-dark .is-dark.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .content kbd.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .is-primary.textarea,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink{border-color:#375a7f}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.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:focus,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.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .docstring>section>a.is-focused.input.docs-sourcelink,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.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:active,html.theme--documenter-dark .is-primary.is-active.textarea,html.theme--documenter-dark .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .is-link.textarea,html.theme--documenter-dark .is-link.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1abc9c}html.theme--documenter-dark .is-link.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-link.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-link.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-link.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .is-info.textarea,html.theme--documenter-dark .is-info.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#024c7d}html.theme--documenter-dark .is-info.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-info.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-info.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-info.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .is-success.textarea,html.theme--documenter-dark .is-success.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#008438}html.theme--documenter-dark .is-success.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-success.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-success.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-success.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .is-warning.textarea,html.theme--documenter-dark .is-warning.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ad8100}html.theme--documenter-dark .is-warning.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-warning.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-warning.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-warning.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .is-danger.textarea,html.theme--documenter-dark .is-danger.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#9e1b0d}html.theme--documenter-dark .is-danger.textarea:focus,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.is-focused.textarea,html.theme--documenter-dark .is-danger.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-danger.textarea:active,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.is-active.textarea,html.theme--documenter-dark .is-danger.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .is-small.textarea,html.theme--documenter-dark .is-small.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.85em}html.theme--documenter-dark .is-medium.textarea,html.theme--documenter-dark .is-medium.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--documenter-dark .is-large.textarea,html.theme--documenter-dark .is-large.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--documenter-dark .is-fullwidth.textarea,html.theme--documenter-dark .is-fullwidth.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--documenter-dark .is-inline.textarea,html.theme--documenter-dark .is-inline.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-inline{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 .radio,html.theme--documenter-dark .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--documenter-dark .radio input,html.theme--documenter-dark .checkbox input{cursor:pointer}html.theme--documenter-dark .radio:hover,html.theme--documenter-dark .checkbox:hover{color:#8c9b9d}html.theme--documenter-dark .radio[disabled],html.theme--documenter-dark .checkbox[disabled],fieldset[disabled] html.theme--documenter-dark .radio,fieldset[disabled] html.theme--documenter-dark .checkbox{color:#fff;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:#fff}html.theme--documenter-dark .select.is-white select{border-color:#fff}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:#000}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:.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:#fff}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.is-loading:after{font-size:.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:#fff;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:#fff}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:#fff}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:#fff}html.theme--documenter-dark .file.is-black:active .file-cta,html.theme--documenter-dark .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}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:#073;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:.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:.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.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:.4em .4em 0 0}html.theme--documenter-dark .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .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 .4em .4em 0}html.theme--documenter-dark .file.is-right .file-name{border-radius:.4em 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:.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:.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:.85em;margin-top:0.25rem}html.theme--documenter-dark .help.is-white{color:#fff}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.is-hovered:not([disabled]),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.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]),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.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),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.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]){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.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):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.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):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.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):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.is-focused:not([disabled]):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.is-active:not([disabled]):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:.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-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{font-size:.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.is-loading:after{font-size:.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 .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:.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:#fff;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:rgba(0,0,0,0);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:.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:.75rem}html.theme--documenter-dark .card-image{display:block;position:relative}html.theme--documenter-dark .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--documenter-dark .card-footer{background-color:rgba(0,0,0,0);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:.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:.4em;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);padding-bottom:.5rem;padding-top:.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:.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:.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:.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:.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:#fff;border-radius:.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:.4em;border-top-right-radius:.4em}html.theme--documenter-dark .list-item:last-child{border-bottom-left-radius:.4em;border-bottom-right-radius:.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:.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:.75em;padding-left:.75em}html.theme--documenter-dark .menu-label{color:#fff;font-size:.75em;letter-spacing:.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:.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:.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:#fff}html.theme--documenter-dark .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .message.is-white .message-body{border-color:#fff;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:#fff}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:.4em .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 1em;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:.4em;border-style:solid;border-width:0 0 0 4px;color:#fff;padding:1.25em 1.5em}html.theme--documenter-dark .message-body code,html.theme--documenter-dark .message-body pre{background-color:#fff}html.theme--documenter-dark .message-body pre code{background-color:rgba(0,0,0,0)}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:#fff;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:#fff;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:#fff;color:#0a0a0a}}html.theme--documenter-dark .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link{color:#fff}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:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-burger{color:#fff}@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:#fff}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:#000;color:#fff}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:#fff}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:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}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:rgba(0,0,0,0);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:rgba(0,0,0,0);border-bottom-color:#1abc9c}html.theme--documenter-dark .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);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:.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:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);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:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);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:rgba(0,0,0,0)}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:rgba(0,0,0,0)}}html.theme--documenter-dark .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--documenter-dark .pagination{font-size:15px;margin:-.25rem}html.theme--documenter-dark .pagination.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.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:.25rem;padding-left:.5em;padding-right:.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:.4em .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:.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:#fff;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:.4em .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:#fff;border-color:#5e6d6f;border-bottom-color:rgba(0,0,0,0) !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:.4em 0 0 .4em}html.theme--documenter-dark .tabs.is-toggle li:last-child a{border-radius:0 .4em .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:.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:.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.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-1{margin-left:8.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-2{flex:none;width:16.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-2{margin-left:16.6666666667%}.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.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-4{margin-left:33.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-5{flex:none;width:41.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-5{margin-left:41.6666666667%}.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.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-7{margin-left:58.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-8{flex:none;width:66.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-8{margin-left:66.6666666667%}.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.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-10{margin-left:83.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-11{flex:none;width:91.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-11{margin-left:91.6666666667%}.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.3333333333%}html.theme--documenter-dark .column.is-offset-1-mobile{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-mobile{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-mobile{margin-left:16.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-4-mobile{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-mobile{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-mobile{margin-left:41.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-7-mobile{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-mobile{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-mobile{margin-left:66.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-10-mobile{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-mobile{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-mobile{margin-left:91.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-1,html.theme--documenter-dark .column.is-offset-1-tablet{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2,html.theme--documenter-dark .column.is-2-tablet{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2,html.theme--documenter-dark .column.is-offset-2-tablet{margin-left:16.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-4,html.theme--documenter-dark .column.is-offset-4-tablet{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5,html.theme--documenter-dark .column.is-5-tablet{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5,html.theme--documenter-dark .column.is-offset-5-tablet{margin-left:41.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-7,html.theme--documenter-dark .column.is-offset-7-tablet{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8,html.theme--documenter-dark .column.is-8-tablet{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8,html.theme--documenter-dark .column.is-offset-8-tablet{margin-left:66.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-10,html.theme--documenter-dark .column.is-offset-10-tablet{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11,html.theme--documenter-dark .column.is-11-tablet{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11,html.theme--documenter-dark .column.is-offset-11-tablet{margin-left:91.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-1-touch{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-touch{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-touch{margin-left:16.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-4-touch{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-touch{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-touch{margin-left:41.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-7-touch{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-touch{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-touch{margin-left:66.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-10-touch{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-touch{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-touch{margin-left:91.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-1-desktop{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-desktop{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-desktop{margin-left:16.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-4-desktop{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-desktop{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-desktop{margin-left:41.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-7-desktop{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-desktop{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-desktop{margin-left:66.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-10-desktop{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-desktop{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-desktop{margin-left:91.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-1-widescreen{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-widescreen{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-widescreen{margin-left:16.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-4-widescreen{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-widescreen{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-widescreen{margin-left:41.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-7-widescreen{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-widescreen{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-widescreen{margin-left:66.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-10-widescreen{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-widescreen{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-widescreen{margin-left:91.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-1-fullhd{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-fullhd{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-fullhd{margin-left:16.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-4-fullhd{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-fullhd{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-fullhd{margin-left:41.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-7-fullhd{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-fullhd{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-fullhd{margin-left:66.6666666667%}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.3333333333%}html.theme--documenter-dark .column.is-offset-10-fullhd{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-fullhd{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-fullhd{margin-left:91.6666666667%}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:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .columns:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .columns:not(:last-child){margin-bottom:calc(1.5rem - .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: .25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--documenter-dark .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--documenter-dark .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-3-fullhd{--columnGap: .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:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .tile.is-child{margin:0 !important}html.theme--documenter-dark .tile.is-parent{padding:.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.3333333333%}html.theme--documenter-dark .tile.is-2{flex:none;width:16.6666666667%}html.theme--documenter-dark .tile.is-3{flex:none;width:25%}html.theme--documenter-dark .tile.is-4{flex:none;width:33.3333333333%}html.theme--documenter-dark .tile.is-5{flex:none;width:41.6666666667%}html.theme--documenter-dark .tile.is-6{flex:none;width:50%}html.theme--documenter-dark .tile.is-7{flex:none;width:58.3333333333%}html.theme--documenter-dark .tile.is-8{flex:none;width:66.6666666667%}html.theme--documenter-dark .tile.is-9{flex:none;width:75%}html.theme--documenter-dark .tile.is-10{flex:none;width:83.3333333333%}html.theme--documenter-dark .tile.is-11{flex:none;width:91.6666666667%}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:#fff;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:#fff}}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:#fff}html.theme--documenter-dark .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--documenter-dark .hero.is-black{background-color:#0a0a0a;color:#fff}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:#fff}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:#fff}@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:#000;color:#fff}html.theme--documenter-dark .hero.is-black .tabs a{color:#fff;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:#fff}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:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 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, #000 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 .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{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 .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{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:#fff}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:#fff}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:#fff;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:#fff}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:.4em}html.theme--documenter-dark .card .card-image img{border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-header{box-shadow:none;background-color:rgba(18,18,18,0.2);border-radius:.4em .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:#fff;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 .content kbd,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{border-radius:.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:#fff}html.theme--documenter-dark .message-body{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .navbar{border-radius:.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 .4em .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:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}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:rgba(0,0,0,0)}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:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}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 pre{position:relative;overflow:hidden}html.theme--documenter-dark pre code,html.theme--documenter-dark pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--documenter-dark pre code:first-of-type,html.theme--documenter-dark pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--documenter-dark pre code:last-of-type,html.theme--documenter-dark pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--documenter-dark pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 5 Free";color:#fff;cursor:pointer;text-align:center}html.theme--documenter-dark pre .copy-button:focus,html.theme--documenter-dark pre .copy-button:hover{opacity:1;background:rgba(255,255,255,0.1);color:#1abc9c}html.theme--documenter-dark pre .copy-button.success{color:#259a12;opacity:1}html.theme--documenter-dark pre .copy-button.error{color:#cb3c33;opacity:1}html.theme--documenter-dark pre:hover .copy-button{opacity:1}html.theme--documenter-dark .admonition{background-color:#282f2f;border-style:solid;border-width:1px;border-color:#5e6d6f;border-radius:.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:.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;color:#fff}html.theme--documenter-dark .admonition.is-default>.admonition-body{color:#fff}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;color:#fff}html.theme--documenter-dark .admonition.is-info>.admonition-body{color:#fff}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;color:#fff}html.theme--documenter-dark .admonition.is-success>.admonition-body{color:#fff}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;color:#fff}html.theme--documenter-dark .admonition.is-warning>.admonition-body{color:#fff}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;color:#fff}html.theme--documenter-dark .admonition.is-danger>.admonition-body{color:#fff}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;color:#fff}html.theme--documenter-dark .admonition.is-compat>.admonition-body{color:#fff}html.theme--documenter-dark .admonition-header{color:#fff;background-color:#5e6d6f;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--documenter-dark .admonition-header:before{font-family:"Font Awesome 5 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--documenter-dark .admonition-body{color:#fff;padding:0.5rem .75rem}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:rgba(0,0,0,0);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.5rem .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:.75rem .75rem;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:.375rem;bottom:.375rem}html.theme--documenter-dark .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--documenter-dark .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--documenter-dark .documenter-example-output{background-color:#1f2424}html.theme--documenter-dark .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#282f2f;color:#fff;border-bottom:3px solid #9e1b0d;padding:10px 35px;text-align:center;font-size:15px}html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--documenter-dark .outdated-warning-overlay a{color:#1abc9c}html.theme--documenter-dark .outdated-warning-overlay a:hover{color:#1dd2af}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 pre,html.theme--documenter-dark code{font-variant-ligatures:no-contextual}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}html.theme--documenter-dark .katex .katex-mathml{top:0;right:0}html.theme--documenter-dark .katex-display,html.theme--documenter-dark mjx-container,html.theme--documenter-dark .MathJax_Display{margin:0.5em 0 !important}html.theme--documenter-dark html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--documenter-dark li.no-marker{list-style:none}html.theme--documenter-dark #documenter .docs-main>article{overflow-wrap:break-word}html.theme--documenter-dark #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@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;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}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}}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;flex-wrap:wrap;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-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}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;font-size:15px;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--documenter-dark #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .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-package-name a,html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover{color:#fff}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;border-top:1px solid #5e6d6f;padding-bottom:1.5rem}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;background:#282f2f}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{color:#fff;background-color:#32393a}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5e6d6f;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 ul.internal .tocitem:hover{background-color:#32393a;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 .ansi span.sgr1{font-weight:bolder}html.theme--documenter-dark .ansi span.sgr2{font-weight:lighter}html.theme--documenter-dark .ansi span.sgr3{font-style:italic}html.theme--documenter-dark .ansi span.sgr4{text-decoration:underline}html.theme--documenter-dark .ansi span.sgr7{color:#1f2424;background-color:#fff}html.theme--documenter-dark .ansi span.sgr8{color:transparent}html.theme--documenter-dark .ansi span.sgr8 span{color:transparent}html.theme--documenter-dark .ansi span.sgr9{text-decoration:line-through}html.theme--documenter-dark .ansi span.sgr30{color:#242424}html.theme--documenter-dark .ansi span.sgr31{color:#f6705f}html.theme--documenter-dark .ansi span.sgr32{color:#4fb43a}html.theme--documenter-dark .ansi span.sgr33{color:#f4c72f}html.theme--documenter-dark .ansi span.sgr34{color:#7587f0}html.theme--documenter-dark .ansi span.sgr35{color:#bc89d3}html.theme--documenter-dark .ansi span.sgr36{color:#49b6ca}html.theme--documenter-dark .ansi span.sgr37{color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr40{background-color:#242424}html.theme--documenter-dark .ansi span.sgr41{background-color:#f6705f}html.theme--documenter-dark .ansi span.sgr42{background-color:#4fb43a}html.theme--documenter-dark .ansi span.sgr43{background-color:#f4c72f}html.theme--documenter-dark .ansi span.sgr44{background-color:#7587f0}html.theme--documenter-dark .ansi span.sgr45{background-color:#bc89d3}html.theme--documenter-dark .ansi span.sgr46{background-color:#49b6ca}html.theme--documenter-dark .ansi span.sgr47{background-color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr90{color:#92a0a2}html.theme--documenter-dark .ansi span.sgr91{color:#ff8674}html.theme--documenter-dark .ansi span.sgr92{color:#79d462}html.theme--documenter-dark .ansi span.sgr93{color:#ffe76b}html.theme--documenter-dark .ansi span.sgr94{color:#8a98ff}html.theme--documenter-dark .ansi span.sgr95{color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr96{color:#6bc8db}html.theme--documenter-dark .ansi span.sgr97{color:#ecf0f1}html.theme--documenter-dark .ansi span.sgr100{background-color:#92a0a2}html.theme--documenter-dark .ansi span.sgr101{background-color:#ff8674}html.theme--documenter-dark .ansi span.sgr102{background-color:#79d462}html.theme--documenter-dark .ansi span.sgr103{background-color:#ffe76b}html.theme--documenter-dark .ansi span.sgr104{background-color:#8a98ff}html.theme--documenter-dark .ansi span.sgr105{background-color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr106{background-color:#6bc8db}html.theme--documenter-dark .ansi span.sgr107{background-color:#ecf0f1}html.theme--documenter-dark code.language-julia-repl>span.hljs-meta{color:#4fb43a;font-weight:bolder}html.theme--documenter-dark .hljs{background:#2b2b2b;color:#f8f8f2}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-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-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-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/v4.0.0/assets/themes/documenter-light.css b/v4.0.0/assets/themes/documenter-light.css new file mode 100644 index 00000000..9b9a14b0 --- /dev/null +++ b/v4.0.0/assets/themes/documenter-light.css @@ -0,0 +1,9 @@ +@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button,.is-unselectable,.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);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}.admonition:not(:last-child),.tabs:not(:last-child),.message:not(:last-child),.list:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.highlight:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-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}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,#documenter .docs-sidebar form.docs-search>input.modal-close,.is-small.delete,#documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.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}.hero-video,.modal-background,.modal,.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,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input,.button{-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}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.is-active.button{outline:none}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled],.pagination-ellipsis[disabled],.file-cta[disabled],.file-name[disabled],.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],.button[disabled],fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] .button{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:#fff;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 Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}body{color:#222;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:#000;font-size:.875em;font-weight:normal;padding:.1em}hr{background-color:#f5f5f5;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:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#222;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#222;font-size:.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:#222}.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:.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:.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:.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:.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:.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:.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:.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:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !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:#1081cb !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:#6b6b6b !important}.has-background-grey{background-color:#6b6b6b !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:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !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 Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","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:#fff;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:#222;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:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(0.375em - 1px);padding-left:.75em;padding-right:.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:#3c5dcd;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:#222;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#222}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#222}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-white{background-color:#fff;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:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.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:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !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:#fff;box-shadow:none;color:#fff}.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:#fff}.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 #fff #fff !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:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.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:#000;border-color:transparent;color:#fff}.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:#fff;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:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !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:#fff}.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 #fff #fff !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:#fff;color:#fff}.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:#fff;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:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:#363636}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;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:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:#363636;color:#f5f5f5}.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:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.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:#f5f5f5;border-color:#f5f5f5;color:#363636}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !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:#f5f5f5;box-shadow:none;color:#f5f5f5}.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:#f5f5f5}.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 #f5f5f5 #f5f5f5 !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:#f5f5f5}.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:#f5f5f5}.button.is-dark:focus,.content kbd.button:focus,.button.is-dark.is-focused,.content kbd.button.is-focused{border-color:transparent;color:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5;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:#f5f5f5;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after,.content kbd.button.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !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:#f5f5f5}.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 #f5f5f5 #f5f5f5 !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:#f5f5f5;color:#f5f5f5}.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:#f5f5f5;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:#f5f5f5;box-shadow:none;color:#f5f5f5}.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:#1497ed;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:#1190e3;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:#ffda4a;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:#ffd83e;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:.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:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.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:#f5f5f5;border-color:#dbdbdb;color:#6b6b6b;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:.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:#222;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:#f5f5f5;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.is-lower-alpha:not([type]){list-style-type:lower-alpha}.content ol.is-lower-roman:not([type]){list-style-type:lower-roman}.content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}.content ol.is-upper-roman:not([type]){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;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:#222}.content table th:not([align]){text-align:left}.content table thead td,.content table thead th{border-width:0 0 2px;color:#222}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#222}.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:.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:#f5f5f5;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:#fff}.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:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:#363636}.notification.is-dark,.content kbd.notification{background-color:#363636;color:#f5f5f5}.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:#222}.progress::-moz-progress-bar{background-color:#222}.progress::-ms-fill{background-color:#222;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 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:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 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, #222 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:.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:#fff;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:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#f5f5f5}.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:#222}.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:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#222}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#222}.table tbody{background-color:rgba(0,0,0,0)}.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:#f5f5f5}.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 .content kbd,.content .tags kbd,.tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}.tags .tag:not(:last-child),.tags .content kbd:not(:last-child),.content .tags kbd:not(:last-child),.tags .docstring>section>a.docs-sourcelink: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 .content kbd:not(.is-normal):not(.is-large),.content .tags.are-medium kbd:not(.is-normal):not(.is-large),.tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag: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),.tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag,.tags.is-centered .content kbd,.content .tags.is-centered kbd,.tags.is-centered .docstring>section>a.docs-sourcelink{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 .content kbd:not(:first-child),.content .tags.is-right kbd:not(:first-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child),.tags.is-right .content kbd:not(:last-child),.content .tags.is-right kbd:not(:last-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}.tags.has-addons .tag,.tags.has-addons .content kbd,.content .tags.has-addons kbd,.tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}.tags.has-addons .tag:not(:first-child),.tags.has-addons .content kbd:not(:first-child),.content .tags.has-addons kbd:not(:first-child),.tags.has-addons .docstring>section>a.docs-sourcelink: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 .content kbd:not(:last-child),.content .tags.has-addons kbd:not(:last-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.tag:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#222;display:inline-flex;font-size:.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,.content kbd:not(body) .delete,.docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:0.25rem;margin-right:-0.375rem}.tag.is-white:not(body),.content kbd.is-white:not(body),.docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}.tag.is-black:not(body),.content kbd.is-black:not(body),.docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}.tag.is-light:not(body),.content kbd.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:#363636}.tag.is-dark:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink.is-dark:not(body),.content .docstring>section>kbd:not(body){background-color:#363636;color:#f5f5f5}.tag.is-primary:not(body),.content kbd.is-primary:not(body),.docstring>section>a.docs-sourcelink:not(body){background-color:#4eb5de;color:#fff}.tag.is-link:not(body),.content kbd.is-link:not(body),.docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#2e63b8;color:#fff}.tag.is-info:not(body),.content kbd.is-info:not(body),.docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#209cee;color:#fff}.tag.is-success:not(body),.content kbd.is-success:not(body),.docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#22c35b;color:#fff}.tag.is-warning:not(body),.content kbd.is-warning:not(body),.docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ffdd57;color:rgba(0,0,0,0.7)}.tag.is-danger:not(body),.content kbd.is-danger:not(body),.docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#da0b00;color:#fff}.tag.is-normal:not(body),.content kbd.is-normal:not(body),.docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}.tag.is-medium:not(body),.content kbd.is-medium:not(body),.docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}.tag.is-large:not(body),.content kbd.is-large:not(body),.docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child),.content kbd:not(body) .icon:first-child:not(:last-child),.docstring>section>a.docs-sourcelink: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),.content kbd:not(body) .icon:last-child:not(:first-child),.docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:-0.375em}.tag:not(body) .icon:first-child:last-child,.content kbd:not(body) .icon:first-child:last-child,.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}.tag.is-delete:not(body),.content kbd.is-delete:not(body),.docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before,.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::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.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}.tag.is-delete:not(body):hover,.content kbd.is-delete:not(body):hover,.docstring>section>a.docs-sourcelink.is-delete:not(body):hover,.tag.is-delete:not(body):focus,.content kbd.is-delete:not(body):focus,.docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#e8e8e8}.tag.is-delete:not(body):active,.content kbd.is-delete:not(body):active,.docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#dbdbdb}.tag.is-rounded:not(body),#documenter .docs-sidebar form.docs-search>input:not(body),.content kbd.is-rounded:not(body),#documenter .docs-sidebar .content form.docs-search>input:not(body),.docstring>section>a.docs-sourcelink.is-rounded: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:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.title .content kbd,.content .title kbd,.title .docstring>section>a.docs-sourcelink,.subtitle .tag,.subtitle .content kbd,.content .subtitle kbd,.subtitle .docstring>section>a.docs-sourcelink{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:.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:.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:#f5f5f5;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}.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(54,54,54,0.3)}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(54,54,54,0.3)}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(54,54,54,0.3)}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(54,54,54,0.3)}.select select:hover,.textarea:hover,.input:hover,#documenter .docs-sidebar form.docs-search>input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input,#documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{border-color:#2e63b8;box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#6b6b6b}.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.input[disabled]::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-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{color:rgba(107,107,107,0.3)}.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.input[disabled]::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-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{color:rgba(107,107,107,0.3)}.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.input[disabled]:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-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{color:rgba(107,107,107,0.3)}.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.input[disabled]:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-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{color:rgba(107,107,107,0.3)}.textarea,.input,#documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);max-width:100%;width:100%}.textarea[readonly],.input[readonly],#documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}.is-white.textarea,.is-white.input,#documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,#documenter .docs-sidebar form.docs-search>input.is-white:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-white.textarea:active,.is-white.input:active,#documenter .docs-sidebar form.docs-search>input.is-white:active,.is-white.is-active.textarea,.is-white.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input,#documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,#documenter .docs-sidebar form.docs-search>input.is-black:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-black.textarea:active,.is-black.input:active,#documenter .docs-sidebar form.docs-search>input.is-black:active,.is-black.is-active.textarea,.is-black.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input,#documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,#documenter .docs-sidebar form.docs-search>input.is-light:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-light.textarea:active,.is-light.input:active,#documenter .docs-sidebar form.docs-search>input.is-light:active,.is-light.is-active.textarea,.is-light.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.content kbd.textarea,.is-dark.input,#documenter .docs-sidebar form.docs-search>input.is-dark,.content kbd.input{border-color:#363636}.is-dark.textarea:focus,.content kbd.textarea:focus,.is-dark.input:focus,#documenter .docs-sidebar form.docs-search>input.is-dark:focus,.content kbd.input:focus,.is-dark.is-focused.textarea,.content kbd.is-focused.textarea,.is-dark.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.content kbd.is-focused.input,#documenter .docs-sidebar .content form.docs-search>input.is-focused,.is-dark.textarea:active,.content kbd.textarea:active,.is-dark.input:active,#documenter .docs-sidebar form.docs-search>input.is-dark:active,.content kbd.input:active,.is-dark.is-active.textarea,.content kbd.is-active.textarea,.is-dark.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.content kbd.is-active.input,#documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.docstring>section>a.textarea.docs-sourcelink,.is-primary.input,#documenter .docs-sidebar form.docs-search>input.is-primary,.docstring>section>a.input.docs-sourcelink{border-color:#4eb5de}.is-primary.textarea:focus,.docstring>section>a.textarea.docs-sourcelink:focus,.is-primary.input:focus,#documenter .docs-sidebar form.docs-search>input.is-primary:focus,.docstring>section>a.input.docs-sourcelink:focus,.is-primary.is-focused.textarea,.docstring>section>a.is-focused.textarea.docs-sourcelink,.is-primary.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.docstring>section>a.is-focused.input.docs-sourcelink,.is-primary.textarea:active,.docstring>section>a.textarea.docs-sourcelink:active,.is-primary.input:active,#documenter .docs-sidebar form.docs-search>input.is-primary:active,.docstring>section>a.input.docs-sourcelink:active,.is-primary.is-active.textarea,.docstring>section>a.is-active.textarea.docs-sourcelink,.is-primary.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.is-link.textarea,.is-link.input,#documenter .docs-sidebar form.docs-search>input.is-link{border-color:#2e63b8}.is-link.textarea:focus,.is-link.input:focus,#documenter .docs-sidebar form.docs-search>input.is-link:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-link.textarea:active,.is-link.input:active,#documenter .docs-sidebar form.docs-search>input.is-link:active,.is-link.is-active.textarea,.is-link.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.is-info.textarea,.is-info.input,#documenter .docs-sidebar form.docs-search>input.is-info{border-color:#209cee}.is-info.textarea:focus,.is-info.input:focus,#documenter .docs-sidebar form.docs-search>input.is-info:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-info.textarea:active,.is-info.input:active,#documenter .docs-sidebar form.docs-search>input.is-info:active,.is-info.is-active.textarea,.is-info.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.is-success.textarea,.is-success.input,#documenter .docs-sidebar form.docs-search>input.is-success{border-color:#22c35b}.is-success.textarea:focus,.is-success.input:focus,#documenter .docs-sidebar form.docs-search>input.is-success:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-success.textarea:active,.is-success.input:active,#documenter .docs-sidebar form.docs-search>input.is-success:active,.is-success.is-active.textarea,.is-success.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.is-warning.textarea,.is-warning.input,#documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ffdd57}.is-warning.textarea:focus,.is-warning.input:focus,#documenter .docs-sidebar form.docs-search>input.is-warning:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-warning.textarea:active,.is-warning.input:active,#documenter .docs-sidebar form.docs-search>input.is-warning:active,.is-warning.is-active.textarea,.is-warning.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.is-danger.textarea,.is-danger.input,#documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#da0b00}.is-danger.textarea:focus,.is-danger.input:focus,#documenter .docs-sidebar form.docs-search>input.is-danger:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-danger.textarea:active,.is-danger.input:active,#documenter .docs-sidebar form.docs-search>input.is-danger:active,.is-danger.is-active.textarea,.is-danger.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.is-small.textarea,.is-small.input,#documenter .docs-sidebar form.docs-search>input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input,#documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}.is-large.textarea,.is-large.input,#documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input,#documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}.is-inline.textarea,.is-inline.input,#documenter .docs-sidebar form.docs-search>input.is-inline{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}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#363636}.radio[disabled],.checkbox[disabled],fieldset[disabled] .radio,fieldset[disabled] .checkbox{color:#6b6b6b;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:#f5f5f5}.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:#fff}.select.is-white select{border-color:#fff}.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:#000}.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:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.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:#1190e3}.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:#ffd83e}.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:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#6b6b6b}.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.is-loading:after{font-size:.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:#fff;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:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.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:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:#363636}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;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:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5}.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:#1497ed;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:#1190e3;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:#ffda4a;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:#ffd83e;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:.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.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:#eee;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:#f5f5f5;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:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.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.is-hovered:not([disabled]),.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.is-hovered:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button.is-focused:not([disabled]),.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button.is-active:not([disabled]),.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.is-focused:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),.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.is-active:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select.is-focused:not([disabled]),.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select.is-active:not([disabled]){z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button.is-focused:not([disabled]):hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button.is-active:not([disabled]):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.is-focused:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):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.is-active:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select.is-focused:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select.is-active:not([disabled]):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:.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:#6b6b6b}.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-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{font-size:.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.is-loading:after{font-size:.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 .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:#222;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:.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:#fff;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);color:#222;max-width:100%;position:relative}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 1px 2px rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#222;display:flex;flex-grow:1;font-weight:700;padding:.75rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem}.card-image{display:block;position:relative}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);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:.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:#fff;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:.5rem;padding-top:.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:#f5f5f5;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:.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:.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:.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:#fff;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:#222}.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:#f5f5f5;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:.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:#222;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#222}.menu-list a.is-active{background-color:#2e63b8;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#6b6b6b;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;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:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:#363636}.message.is-light .message-body{border-color:#f5f5f5;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:#f5f5f5}.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:#12537d}.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:#3c3108}.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:#222;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;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:#222;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.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:#f5f5f5;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:#222;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:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;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:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.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:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@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:#fff}.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:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.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:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;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:#f5f5f5;color:#363636}}.navbar.is-dark,.content kbd.navbar{background-color:#363636;color:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link::after,.content kbd.navbar .navbar-brand .navbar-link::after{border-color:#f5f5f5}.navbar.is-dark .navbar-burger,.content kbd.navbar .navbar-burger{color:#f5f5f5}@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:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active,.content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#f5f5f5}}.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:#1190e3;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:#1190e3;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:#1190e3;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:#ffd83e;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:#ffd83e;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:#ffd83e;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 #f5f5f5}.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 #f5f5f5}.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:rgba(0,0,0,0);border-bottom-color:#2e63b8}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);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:#f5f5f5;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:#fff;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:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;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:#fff;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:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;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:rgba(0,0,0,0)}.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:-.25rem}.pagination.is-small,#documenter .docs-sidebar form.docs-search>input.pagination{font-size:.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:.25rem;padding-left:.5em;padding-right:.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:#3c5dcd}.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:#6b6b6b;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:#f5f5f5;border-radius:4px 4px 0 0;color:#222;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:.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:#222}.panel-list a:hover{color:#2e63b8}.panel-block{align-items:center;color:#222;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:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#6b6b6b;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:#222;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#222;color:#222}.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:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !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:#f5f5f5;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:.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:.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.3333333333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.3333333333%}.columns.is-mobile>.column.is-2{flex:none;width:16.6666666667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.6666666667%}.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.3333333333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.3333333333%}.columns.is-mobile>.column.is-5{flex:none;width:41.6666666667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.6666666667%}.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.3333333333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.3333333333%}.columns.is-mobile>.column.is-8{flex:none;width:66.6666666667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.6666666667%}.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.3333333333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.3333333333%}.columns.is-mobile>.column.is-11{flex:none;width:91.6666666667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.6666666667%}.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.3333333333%}.column.is-offset-1-mobile{margin-left:8.3333333333%}.column.is-2-mobile{flex:none;width:16.6666666667%}.column.is-offset-2-mobile{margin-left:16.6666666667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.3333333333%}.column.is-offset-4-mobile{margin-left:33.3333333333%}.column.is-5-mobile{flex:none;width:41.6666666667%}.column.is-offset-5-mobile{margin-left:41.6666666667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.3333333333%}.column.is-offset-7-mobile{margin-left:58.3333333333%}.column.is-8-mobile{flex:none;width:66.6666666667%}.column.is-offset-8-mobile{margin-left:66.6666666667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.3333333333%}.column.is-offset-10-mobile{margin-left:83.3333333333%}.column.is-11-mobile{flex:none;width:91.6666666667%}.column.is-offset-11-mobile{margin-left:91.6666666667%}.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.3333333333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.3333333333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.6666666667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.6666666667%}.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.3333333333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.3333333333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.6666666667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.6666666667%}.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.3333333333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.3333333333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.6666666667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.6666666667%}.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.3333333333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.3333333333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.6666666667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.6666666667%}.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.3333333333%}.column.is-offset-1-touch{margin-left:8.3333333333%}.column.is-2-touch{flex:none;width:16.6666666667%}.column.is-offset-2-touch{margin-left:16.6666666667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.3333333333%}.column.is-offset-4-touch{margin-left:33.3333333333%}.column.is-5-touch{flex:none;width:41.6666666667%}.column.is-offset-5-touch{margin-left:41.6666666667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.3333333333%}.column.is-offset-7-touch{margin-left:58.3333333333%}.column.is-8-touch{flex:none;width:66.6666666667%}.column.is-offset-8-touch{margin-left:66.6666666667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.3333333333%}.column.is-offset-10-touch{margin-left:83.3333333333%}.column.is-11-touch{flex:none;width:91.6666666667%}.column.is-offset-11-touch{margin-left:91.6666666667%}.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.3333333333%}.column.is-offset-1-desktop{margin-left:8.3333333333%}.column.is-2-desktop{flex:none;width:16.6666666667%}.column.is-offset-2-desktop{margin-left:16.6666666667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.3333333333%}.column.is-offset-4-desktop{margin-left:33.3333333333%}.column.is-5-desktop{flex:none;width:41.6666666667%}.column.is-offset-5-desktop{margin-left:41.6666666667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.3333333333%}.column.is-offset-7-desktop{margin-left:58.3333333333%}.column.is-8-desktop{flex:none;width:66.6666666667%}.column.is-offset-8-desktop{margin-left:66.6666666667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.3333333333%}.column.is-offset-10-desktop{margin-left:83.3333333333%}.column.is-11-desktop{flex:none;width:91.6666666667%}.column.is-offset-11-desktop{margin-left:91.6666666667%}.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.3333333333%}.column.is-offset-1-widescreen{margin-left:8.3333333333%}.column.is-2-widescreen{flex:none;width:16.6666666667%}.column.is-offset-2-widescreen{margin-left:16.6666666667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.3333333333%}.column.is-offset-4-widescreen{margin-left:33.3333333333%}.column.is-5-widescreen{flex:none;width:41.6666666667%}.column.is-offset-5-widescreen{margin-left:41.6666666667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.3333333333%}.column.is-offset-7-widescreen{margin-left:58.3333333333%}.column.is-8-widescreen{flex:none;width:66.6666666667%}.column.is-offset-8-widescreen{margin-left:66.6666666667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.3333333333%}.column.is-offset-10-widescreen{margin-left:83.3333333333%}.column.is-11-widescreen{flex:none;width:91.6666666667%}.column.is-offset-11-widescreen{margin-left:91.6666666667%}.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.3333333333%}.column.is-offset-1-fullhd{margin-left:8.3333333333%}.column.is-2-fullhd{flex:none;width:16.6666666667%}.column.is-offset-2-fullhd{margin-left:16.6666666667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.3333333333%}.column.is-offset-4-fullhd{margin-left:33.3333333333%}.column.is-5-fullhd{flex:none;width:41.6666666667%}.column.is-offset-5-fullhd{margin-left:41.6666666667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.3333333333%}.column.is-offset-7-fullhd{margin-left:58.3333333333%}.column.is-8-fullhd{flex:none;width:66.6666666667%}.column.is-offset-8-fullhd{margin-left:66.6666666667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.3333333333%}.column.is-offset-10-fullhd{margin-left:83.3333333333%}.column.is-11-fullhd{flex:none;width:91.6666666667%}.column.is-offset-11-fullhd{margin-left:91.6666666667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .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: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .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:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.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.3333333333%}.tile.is-2{flex:none;width:16.6666666667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.3333333333%}.tile.is-5{flex:none;width:41.6666666667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.3333333333%}.tile.is-8{flex:none;width:66.6666666667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.3333333333%}.tile.is-11{flex:none;width:91.6666666667%}.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:#fff;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:#fff}}.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:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.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:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@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:#000;color:#fff}.hero.is-black .tabs a{color:#fff;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:#fff}.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:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;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:#f5f5f5}}.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:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark,.content kbd.hero{background-color:#363636;color:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5}@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:#f5f5f5}.hero.is-dark .tabs a,.content kbd.hero .tabs a{color:#f5f5f5;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:#f5f5f5}.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,.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{background-color:#f5f5f5;border-color:#f5f5f5;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,.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{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:#1190e3;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, #05a6d6 0%, #209cee 71%, #3287f5 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #05a6d6 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:#ffd83e;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, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 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:#222}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}pre{position:relative;overflow:hidden}pre code,pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}pre code:first-of-type,pre code.hljs:first-of-type{padding-top:0.5rem !important}pre code:last-of-type,pre code.hljs:last-of-type{padding-bottom:0.5rem !important}pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 5 Free";color:#222;cursor:pointer;text-align:center}pre .copy-button:focus,pre .copy-button:hover{opacity:1;background:rgba(34,34,34,0.1);color:#2e63b8}pre .copy-button.success{color:#259a12;opacity:1}pre .copy-button.error{color:#cb3c33;opacity:1}pre:hover .copy-button{opacity:1}.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:.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:#def0fc;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:#bdf4d1;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:#ffaba7;border-color:#da0b00}.admonition.is-danger>.admonition-header{background-color:#da0b00;color:#fff}.admonition.is-danger>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-compat{background-color:#bdeff5;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.5rem .75rem;position:relative}.admonition-header:before{font-family:"Font Awesome 5 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}.admonition-body{color:#222;padding:0.5rem .75rem}.admonition-body pre{background-color:#f5f5f5}.admonition-body code{background-color:rgba(0,0,0,0.05)}.docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);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.5rem .75rem;background-color:#f5f5f5;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:.75rem .75rem;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:.375rem;bottom:.375rem}.docstring>section>a.docs-sourcelink:focus{opacity:1 !important}.docstring:hover>section>a.docs-sourcelink{opacity:0.2}.docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}.docstring>section:hover a.docs-sourcelink{opacity:1}.documenter-example-output{background-color:#fff}.outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#ffaba7;color:rgba(0,0,0,0.7);border-bottom:3px solid #da0b00;padding:10px 35px;text-align:center;font-size:15px}.outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}.outdated-warning-overlay a{color:#2e63b8}.outdated-warning-overlay a:hover{color:#363636}.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:#222}.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}pre,code{font-variant-ligatures:no-contextual}.breadcrumb a.is-disabled{cursor:default;pointer-events:none}.breadcrumb a.is-disabled,.breadcrumb a.is-disabled:hover{color:#222}.hljs{background:initial !important}.katex .katex-mathml{top:0;right:0}.katex-display,mjx-container,.MathJax_Display{margin:0.5em 0 !important}html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}li.no-marker{list-style:none}#documenter .docs-main>article{overflow-wrap:break-word}#documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@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:#fff;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;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}#documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #bbb;transition-duration:0.7s;-webkit-transition-duration:0.7s}#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}}#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;flex-wrap:wrap;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-main .docs-footer .flexbox-break{flex-basis:100%;height:0}#documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}#documenter .docs-sidebar{display:flex;flex-direction:column;color:#0a0a0a;background-color:#f5f5f5;border-right:1px solid #dbdbdb;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}#documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .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-package-name a,#documenter .docs-sidebar .docs-package-name a:hover{color:#0a0a0a}#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;border-top:1px solid #dbdbdb;padding-bottom:1.5rem}#documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}#documenter .docs-sidebar ul.docs-menu>li li{font-size:.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:.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;background:#f5f5f5}#documenter .docs-sidebar ul.docs-menu a.tocitem:hover,#documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#0a0a0a;background-color:#ebebeb}#documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;background-color:#fff}#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#fff;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#ebebeb;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:.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:#ccc}}@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:#ccc}}#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}.ansi span.sgr1{font-weight:bolder}.ansi span.sgr2{font-weight:lighter}.ansi span.sgr3{font-style:italic}.ansi span.sgr4{text-decoration:underline}.ansi span.sgr7{color:#fff;background-color:#222}.ansi span.sgr8{color:transparent}.ansi span.sgr8 span{color:transparent}.ansi span.sgr9{text-decoration:line-through}.ansi span.sgr30{color:#242424}.ansi span.sgr31{color:#a7201f}.ansi span.sgr32{color:#066f00}.ansi span.sgr33{color:#856b00}.ansi span.sgr34{color:#2149b0}.ansi span.sgr35{color:#7d4498}.ansi span.sgr36{color:#007989}.ansi span.sgr37{color:gray}.ansi span.sgr40{background-color:#242424}.ansi span.sgr41{background-color:#a7201f}.ansi span.sgr42{background-color:#066f00}.ansi span.sgr43{background-color:#856b00}.ansi span.sgr44{background-color:#2149b0}.ansi span.sgr45{background-color:#7d4498}.ansi span.sgr46{background-color:#007989}.ansi span.sgr47{background-color:gray}.ansi span.sgr90{color:#616161}.ansi span.sgr91{color:#cb3c33}.ansi span.sgr92{color:#0e8300}.ansi span.sgr93{color:#a98800}.ansi span.sgr94{color:#3c5dcd}.ansi span.sgr95{color:#9256af}.ansi span.sgr96{color:#008fa3}.ansi span.sgr97{color:#f5f5f5}.ansi span.sgr100{background-color:#616161}.ansi span.sgr101{background-color:#cb3c33}.ansi span.sgr102{background-color:#0e8300}.ansi span.sgr103{background-color:#a98800}.ansi span.sgr104{background-color:#3c5dcd}.ansi span.sgr105{background-color:#9256af}.ansi span.sgr106{background-color:#008fa3}.ansi span.sgr107{background-color:#f5f5f5}code.language-julia-repl>span.hljs-meta{color:#066f00;font-weight:bolder}/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{background:#F0F0F0;color:#444}.hljs-comment{color:#888888}.hljs-tag,.hljs-punctuation{color:#444a}.hljs-tag .hljs-name,.hljs-tag .hljs-attr{color:#444}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.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-operator,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} diff --git a/v4.0.0/assets/themeswap.js b/v4.0.0/assets/themeswap.js new file mode 100644 index 00000000..c58e993e --- /dev/null +++ b/v4.0.0/assets/themeswap.js @@ -0,0 +1,66 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Intialize the theme to null, which means default + var theme = null; + // If the browser supports the localstorage and is not disabled then try to get the + // documenter theme + if(window.localStorage != null) { + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + theme = window.localStorage.getItem("documenter-theme"); + } + // Check if the browser supports user color preference + var darkPreference = false; + // Check if the users preference is for dark color scheme + if(window.matchMedia('(prefers-color-scheme: dark)').matches === true) { + darkPreference = true; + } + // 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 = []; var darkTheme = null; + 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); + // Check if the theme is primary dark theme + var isDarkTheme = (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null); + // If ss is for dark theme then set the value of darkTheme to the name of the theme + if(isDarkTheme) darkTheme = themename; + // If we find a matching theme (and it's not the default), we'll set active to non-null + if(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; + }); + } + else if(darkTheme !== null && darkPreference === true) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + darkTheme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + if (ss.ownerNode.getAttribute("data-theme-name") !== darkTheme) { + ss.disabled = true; + } + }); + } +} +set_theme_from_local_storage(); diff --git a/v4.0.0/assets/warner.js b/v4.0.0/assets/warner.js new file mode 100644 index 00000000..5531c885 --- /dev/null +++ b/v4.0.0/assets/warner.js @@ -0,0 +1,49 @@ +function maybeAddWarning () { + // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE + // in siteinfo.js. + // If either of these are undefined something went horribly wrong, so we abort. + if ( + window.DOCUMENTER_NEWEST === undefined || + window.DOCUMENTER_CURRENT_VERSION === undefined || + window.DOCUMENTER_STABLE === undefined + ) { + return + }; + + // Current version is not a version number, so we can't tell if it's the newest version. Abort. + if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { + return + }; + + // Current version is newest version, so no need to add a warning. + if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { + return + }; + + // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. + if (document.body.querySelector('meta[name="robots"]') === null) { + const meta = document.createElement('meta'); + meta.name = 'robots'; + meta.content = 'noindex'; + + document.getElementsByTagName('head')[0].appendChild(meta); + }; + + const div = document.createElement('div'); + div.classList.add('outdated-warning-overlay'); + const closer = document.createElement('button'); + closer.classList.add('outdated-warning-closer', 'delete'); + closer.addEventListener('click', function () { + document.body.removeChild(div); + }); + const href = window.documenterBaseURL + '/../' + window.DOCUMENTER_STABLE; + div.innerHTML = 'This documentation is not for the latest stable release, but for either the development version or an older release.
    Click here to go to the documentation for the latest stable release.'; + div.appendChild(closer); + document.body.appendChild(div); +}; + +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', maybeAddWarning); +} else { + maybeAddWarning(); +}; diff --git a/v4.0.0/chebs.svg b/v4.0.0/chebs.svg new file mode 100644 index 00000000..da3e4695 --- /dev/null +++ b/v4.0.0/chebs.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v4.0.0/extending/index.html b/v4.0.0/extending/index.html new file mode 100644 index 00000000..56814a83 --- /dev/null +++ b/v4.0.0/extending/index.html @@ -0,0 +1,161 @@ + +Extending · Polynomials.jl

    Extending Polynomials

    The AbstractUnivaeriatePolynomial type was made to be extended.

    A polynomial's coefficients are relative to some basis. The Polynomial type relates coefficients [a0, a1, ..., an], say, to the polynomial $a_0 + a_1\cdot x + a_2\cdot x^2 + \cdots + a_n\cdot x^n$, through the standard basis $1, x, x^2, ..., x^n$. New polynomial types typically represent the polynomial through a different basis. For example, CheyshevT uses a basis $T_0=1, T_1=x, T_2=2x^2-1, \cdots, T_n = 2xT_{n-1} - T_{n-2}$. For this type the coefficients [a0,a1,...,an] are associated with the polynomial `a0\cdot T_0 + a_1 \cdot T_1 + \cdots + a_n\cdot T_n.

    A polynomial type consists of a container type (with parent type AbstractUnivariatePolynomial) and a basis type (with parent type AbstractBasis). There a several different storage types implemented.

    To implement a new polynomial type, P, the following methods should be implemented:

    FunctionRequiredNotes
    A container typexUsually selected from an available one.
    A basis typex
    variableConvenience to find the monomial x in the new basis.
    Base.evalpoly(x, p::P)xTo evaluate the polynomial at x
    *(::P, ::P)Multiplication of polynomials
    convert(::P, p::Polynomial)Defaults to polynomial evaluation. Can be used to define * by round trip through Polynomial type
    convert(::Polynomial, p)Defaults to polynomial evaluation, which uses evalpoly, variable, *
    scalar_add(c::S, ::P)Scalar addition. Default requires one to be defined.
    onexConvenience to find the constant $1$ in the new basis.
    map(f, p)xUsed to define scalar multiplication
    divremRequired for gcd
    vanderRequired for fit
    companionRequired for roots
    Polynomials.domainShould return a Polynomials.Interval instance

    As always, if the default implementation does not work or there are more efficient ways of implementing, feel free to overwrite functions from common.jl for your type.

    The general idea is the container type should provide the vector operations of polynomial addition, subtraction, and scalar multiplication. The latter is generically implemented through a map(f,p) method. The second example illustrates, though it isn't expected that container types will need being defined by users of this package.

    The basis type directs dispatch for other operations and allows definitions for one and variable. An evalpoly method may be defined for a given basis type, though specializations based on the container may be desirable.

    Methods like * will typically need to consider both the underlying container type and the basis, though if convert methods are defined, the defaults can be utilized as converting to the Polynomial type, performing the operation, then converting back is possible, though likely not as efficient.

    Note

    Most promotion rules will coerce towards the Polynomial type, so not all methods have to be implemented if you provide a conversion function.

    A new basis type

    The generalized Laguerre polynomials are orthogonal polynomials parameterized by $\alpha$ and defined recursively by

    \[\begin{align*} +L^\alpha_1(x) &= 1\\ +L^\alpha_2(x) &= 1 + \alpha - x\\ +L^\alpha_{n+1}(x) &= \frac{2n+1+\alpha -x}{n+1} L^\alpha_n(x) - \frac{n+\alpha}{n+1} L^\alpha_{n-1}(x)\\ +&= (A_nx +B_n) \cdot L^\alpha_n(x) - C_n \cdot L^\alpha_{n-1}(x). +\end{align*}\]

    There are other characterizations available. The three-point recursion, described by A,B, and C is used below for evaluation.

    We show how to define a new basis type, LaguerreBasis, leveraging one of the existing container types. In this example our basis type has a parameter. The ChebyshevT type, gives a related example of how this task can be implemented.

    First we load the package and import a few non-exported functions:

    julia> using Polynomials;
    +
    +julia> import Polynomials: AbstractUnivariatePolynomial, AbstractBasis, MutableDensePolynomial;

    We define the basis with:

    julia> struct LaguerreBasis{alpha} <: AbstractBasis end
    +
    +julia> Polynomials.basis_symbol(::Type{<:AbstractUnivariatePolynomial{LaguerreBasis{α},T,X}}) where {α,T,X} =
    +           "L^$(α)"

    We added a method to basis_symbol to show this basis. The display of the basis symbol has a poor default. The method above requires the full type, as the indeterminate, X, may be part of the desired output. More generally, Polynomials.printbasis can have methods added to adjust for different display types.

    Polynomial types can be initiated through specifying a storage type and a basis type, say:

    julia> P = MutableDensePolynomial{LaguerreBasis{0}}
    +MutableDensePolynomial{LaguerreBasis{0}}

    Instances can now be created:

    julia> p = P([1,2,3])
    +MutableDensePolynomial(1L^0_0 + 2*L^0_1 + 3*L^0_2)

    Or using other storage types:

    julia> Polynomials.ImmutableDensePolynomial{LaguerreBasis{1}}((1,2,3))
    +Polynomials.ImmutableDensePolynomial(1L^1_0 + 2*L^1_1 + 3*L^1_2)

    All polynomial types have vector addition and scalar multiplication defined, as these are basis independent:

    julia> q = P([1,2])
    +MutableDensePolynomial(1L^0_0 + 2*L^0_1)
    +
    +julia> p + q
    +MutableDensePolynomial(2L^0_0 + 4*L^0_1 + 3*L^0_2)
    +
    +julia> 2p
    +MutableDensePolynomial(2L^0_0 + 4*L^0_1 + 6*L^0_2)

    For a new basis, there are no default methods for polynomial evaluation and polynomial multiplication; and no defaults for one (used by default for scalar addition), and variable (used by default in conversion).

    For the Laguerre Polynomials, Clenshaw recursion can be used for evaluation.

    julia> function ABC(::Type{LaguerreBasis{α}}, n) where {α}
    +           o = one(α)
    +           d = n + o
    +           (A=-o/d, B=(2n + o + α)/d, C=(n+α)/d)
    +       end
    +ABC (generic function with 1 method)
    julia> function clenshaw_eval(p::P, x::S) where {α, Bᵅ<: LaguerreBasis{α}, T, P<:AbstractUnivariatePolynomial{Bᵅ,T}, S}
    +           d = degree(p)
    +           R = typeof(((one(α) * one(T)) * one(S)) / 1)
    +           p₀ = one(R)
    +           d == -1 && return zero(R)
    +           d == 0 && return p[0] * one(R)
    +           Δ0 = p[d-1]
    +           Δ1 = p[d]
    +           @inbounds for i in (d - 1):-1:1
    +               A,B,C = ABC(Bᵅ, i)
    +               Δ0, Δ1 =
    +                   p[i] - Δ1 * C, Δ0 + Δ1 * muladd(x, A, B)
    +           end
    +           A,B,C = ABC(Bᵅ, 0)
    +           p₁ = muladd(x, A, B) * p₀
    +           return Δ0 * p₀ + Δ1 * p₁
    +       end
    +clenshaw_eval (generic function with 1 method)

    Internally, evalpoly is called so we forward that method.

    julia> Polynomials.evalpoly(x, p::P) where {P<:AbstractUnivariatePolynomial{<:LaguerreBasis}} =
    +               clenshaw_eval(p, x)

    We test this out by passing in the variable x in the standard basis:

    julia> p = P([0,0,1])
    +MutableDensePolynomial(L^0_2)
    +
    +julia> x = variable(Polynomial)
    +Polynomial(1.0*x)
    +
    +julia> p(x)
    +Polynomial(1.0 - 2.0*x + 0.5*x^2)

    This shows evaluation works and also that conversion to the Polynomial type is available through polynomial evaluation. This is used by default by convert, so we immediately have other convert methods available:

    julia> convert(ChebyshevT, p)
    +ChebyshevT(1.25⋅T_0(x) - 2.0⋅T_1(x) + 0.25⋅T_2(x))

    Or, using some extra annotations to have rational arithmetic used, we can compare to easily found representations in the standard basis:

    julia> q = Polynomials.basis(MutableDensePolynomial{LaguerreBasis{0//1}, Int}, 5)
    +MutableDensePolynomial(L^0//1_5)
    +
    +julia> x = variable(Polynomial{Int})
    +Polynomial(x)
    +
    +julia> q(x)
    +Polynomial(1//1 - 5//1*x + 5//1*x^2 - 5//3*x^3 + 5//24*x^4 - 1//120*x^5)

    The values of one and variable are straightforward to define, as $L_0=1$ and $L_1=1 - x$ or $x = L_0 - L_1$

    julia> Polynomials.one(::Type{P}) where {B<:LaguerreBasis,T,X,P<:AbstractUnivariatePolynomial{B,T,X}} =
    +           P([one(T)])
    +
    +julia> Polynomials.variable(::Type{P}) where {B<:LaguerreBasis,T,X,P<:AbstractUnivariatePolynomial{B,T,X}} =
    +           P([one(T), -one(T)])

    To see this is correct, we have:

    julia> variable(P)(x) == x
    +true

    Scalar addition defaults to a call to one(p), so this is now defined:

    julia> 2 + p
    +MutableDensePolynomial(2L^0_0 + L^0_2)

    Often it is more performant to implement a specific method for scalar_add. Here we utilize the fact that $L_0 = 1$ to manipulate the coefficients. Below we specialize to a container type:

    julia> function Polynomials.scalar_add(c::S, p::P) where {B<:LaguerreBasis,T,X,
    +                                                          P<:MutableDensePolynomial{B,T,X},S}
    +           R = promote_type(T,S)
    +           iszero(p) && return MutableDensePolynomial{B,R,X}(c)
    +           cs = convert(Vector{R}, copy(p.coeffs))
    +           cs[1] += c
    +           MutableDensePolynomial{B,R,X}(cs)
    +       end
    +
    +julia> p + 3
    +MutableDensePolynomial(3L^0_0 + L^0_2)

    Multiplication defaults to a code path where the two polynomials are promoted to a common type and then multiplied. Here we implement polynomial multiplication through conversion to the polynomial type. The direct formula could be implemented, but that isn't so illustrative for this example. See the SpecialPolynomials package for an implementation.

    julia> function Base.:*(p::MutableDensePolynomial{B,T,X},
    +                        q::MutableDensePolynomial{B,S,X}) where {B<:LaguerreBasis, T,S,X}
    +           x = variable(Polynomial{T,X})
    +           p(x) * q(x)
    +       end

    Were it defined, a convert method from Polynomial to the LaguerreBasis could be used to implement multiplication, as we have defined a variable method.

    A new container type

    This example shows how to make a new container type, though this should be unnecessary, given the current variety, there may be gains to be had (e.g. an immutable, sparse type?) In this case, we offer a minimal example where the polynomial type aliases the vector defining the coefficients is created. For other bases, more methods may be necessary to define (again, refer to ChebyshevT for an example).

    We have two constructor methods. The first is the typical code path. It makes a copy of the coefficients and then wraps those within the polynomial container type. For performance reasons, generically it is helpful to pass in a flag to indicate no copying or checking of the input is needed (Val{false}). This is used by some inherited methods when we specialize to the StandardBasis type. Generically, a container type may accept an offset, though this type won't; a 0-based vector is implicit.

    julia> using Polynomials
    +
    +julia> struct AliasPolynomialType{B,T,X} <: Polynomials.AbstractDenseUnivariatePolynomial{B, T, X}
    +           coeffs::Vector{T}
    +           function AliasPolynomialType{B, T, X}(coeffs::AbstractVector{S}, o::Int=0) where {B, T, S, X}
    +               new{B,T,Symbol(X)}(convert(Vector{T}, copy(coeffs)))
    +           end
    +           function AliasPolynomialType{B, T, X}(::Val{false}, coeffs::AbstractVector{S}, o::Int=0) where {B, T, S, X}
    +               new{B,T,Symbol(X)}(convert(Vector{T}, coeffs))
    +           end
    +       end
    +
    +julia> Polynomials.@poly_register AliasPolynomialType

    The call to @poly_register adds many different means to construct polynomials of this type along with some other default methods.

    A few methods need defining to get indexing to work:

    julia> Base.firstindex(p::AliasPolynomialType) = 0
    +
    +julia> Base.lastindex(p::AliasPolynomialType) = length(p.coeffs) - 1
    +
    julia> Polynomials.constructorof(::Type{<:AliasPolynomialType{B}}) where {B} = AliasPolynomialType{B}
    +

    We need to add in the vector-space operations:

    julia> function Base.:+(p::AliasPolynomialType{B,T,X}, q::AliasPolynomialType{B,S,X}) where {B,S,T,X}
    +                       R = promote_type(T,S)
    +                        n = maximum(degree, (p,q))
    +                   cs = [p[i] + q[i] for i in 0:n]
    +                   AliasPolynomialType{B,R,X}(Val(false), cs)  # save a copy
    +                       end
    +
    +julia> function Base.:-(p::AliasPolynomialType{B,T,X}, q::AliasPolynomialType{B,S,X}) where {B,S,T,X}
    +                       R = promote_type(T,S)
    +                               n = maximum(degree, (p,q))
    +                               cs = [p[i] - q[i] for i in 0:n]
    +                               AliasPolynomialType{B,R,X}(Val(false), cs)
    +                       end
    +
    +julia> function Base.map(fn, p::P) where {B,T,X,P<:AliasPolynomialType{B,T,X}}
    +                  cs = map(fn, p.coeffs)
    +                  R = eltype(cs)
    +                  AliasPolynomialType{B,R,X}(Val(false), cs)
    +              end
    +

    A type and a basis defines a polynomial type. This example uses the StandardBasis basis type and consequently inherits the methods mentioned above that otherwise would need implementing.

    julia> AliasPolynomial = AliasPolynomialType{Polynomials.StandardBasis};
    +

    To see this new polynomial type in action, we have:

    julia> xs = [1,2,3,4];
    +
    +julia> p = AliasPolynomial(xs)
    +AliasPolynomialType(1 + 2*x + 3*x^2 + 4*x^3)
    +
    +julia> q = AliasPolynomial(1.0, :y)
    +AliasPolynomialType(1.0)
    +
    +julia> 2p - q
    +AliasPolynomialType(3.0 + 4.0*x + 6.0*x^2 + 8.0*x^3)
    +
    +julia> (derivative ∘ integrate)(p) == p
    +true
    +
    +julia> p(3)
    +142

    The default for polynomial multiplication is to call * for two instances of the type with the same variable, and possibly different element types. For standard basis types, we can add this method:

    julia> Base.:*(p::AliasPolynomialType{T,X}, q::AliasPolynomialType{S,X}) where {T,S,X} = Polynomials._standard_basis_multiplication(p,q)
    +
    +julia> p * p
    +AliasPolynomialType(1 + 4*x + 10*x^2 + 20*x^3 + 25*x^4 + 24*x^5 + 16*x^6)

    For the Polynomial type, the default on operations is to copy the array. For this type, it might seem reasonable – to avoid allocations – to update the coefficients in place for scalar addition and scalar multiplication.

    Scalar addition, p+c, defaults to p + c*one(p), or polynomial addition, which is not inplace without additional work. As such, we create a new method and an infix operator

    julia> function scalar_add!(c::T, p::AliasPolynomial{T}) where {T}
    +           p.coeffs[1] += c
    +           p
    +       end;
    +
    +julia> p::AliasPolynomial +ₛ c::Number = scalar_add!(c, p);
    +
    +julia> c::Number +ₛ p::AliasPolynomial = scalar_add!(c, p);

    The viewpoint that a polynomial represents a vector of coefficients leads to an expectation that vector operations should match when possible. Scalar multiplication is a vector operation, so it seems reasonable to override the broadcast machinery to implement an in place operation (e.g. p .*= 2). By default, the polynomial types are not broadcastable over their coefficients. We would need to make a change there and modify the copyto! function:

    julia> Base.broadcastable(p::AliasPolynomial) = p.coeffs;
    +
    +julia> Base.ndims(::Type{<:AliasPolynomial}) = 1
    +
    +julia> Base.copyto!(p::AliasPolynomial, x) = (copyto!(p.coeffs, x); chop!(p));
    +
    +julia> p
    +AliasPolynomialType(1 + 2*x + 3*x^2 + 4*x^3)
    +
    +julia> p .*= 2
    +AliasPolynomialType(2 + 4*x + 6*x^2 + 8*x^3)
    +
    +julia> p ./= 2
    +AliasPolynomialType(1 + 2*x + 3*x^2 + 4*x^3)

    Trying to divide again would throw an error, as the result would not fit with the integer type of p.

    Now p is treated as the vector p.coeffs, as regards broadcasting, so some things may be surprising, for example this expression returns a vector, not a polynomial:

    julia> p .+ 2
    +4-element Vector{Int64}:
    + 3
    + 4
    + 5
    + 6

    The unexported Polynomials.PnPolynomial polynomial type implements much of the above.


    Polynomials.AbstractUnivariatePolynomialType
    AbstractUnivariatePolynomial{B,T,X} <: AbstractPolynomial{T,X}
    +AbstractDenseUnivariatePolynomial{B,T,X} <: AbstractUnivariatePolynomial{B,T,X}
    +AbstractLaurentUnivariatePolynomial{B,T,X} <: AbstractUnivariatePolynomial{B,T,X}

    Abstract container types for polynomials with an explicit basis, B. AbstractDenseUnivariatePolynomial is for 0-based polynomials; AbstractLaurentUnivariatePolynomial is for polynomials with possibly negative powers of the indeterminate.

    source
    diff --git a/v4.0.0/extensions/index.html b/v4.0.0/extensions/index.html new file mode 100644 index 00000000..102882fe --- /dev/null +++ b/v4.0.0/extensions/index.html @@ -0,0 +1,13 @@ + +Extensions · Polynomials.jl

    Extensions

    As of v1.9 of Julia, packages can provide extension code which is loaded when external packages are loaded.

    Makie

    When Makie is loaded, a plot recipe is provided.

    ChainRulesCore

    When ChainRulesCore is loaded, a frule and rrule is defined for to integrate with different autodifferentiation packages.

    MutableArithmetics

    When the MutableArithmetics package is loaded, an extension provides its functionality for a few polynomial types, described in the following. Prior to v1.9 the external package PolynomialsMutableArithmetics provided the same functionality.

    While polynomials of type Polynomial are mutable objects, operations such as +, -, *, always create new polynomials without modifying its arguments. The time needed for these allocations and copies of the polynomial coefficients may be noticeable in some use cases. This is amplified when the coefficients are for instance BigInt or BigFloat which are mutable themselves. This can be avoided by modifying existing polynomials to contain the result of the operation using the MutableArithmetics (MA) API.

    Consider for instance the following arrays of polynomials

    using Polynomials
    +d, m, n = 30, 20, 20
    +p(d) = Polynomial(big.(1:d))
    +A = [p(d) for i in 1:m, j in 1:n]
    +b = [p(d) for i in 1:n]

    In this case, the arrays are mutable objects for which the elements are mutable polynomials which have mutable coefficients (BigInts). These three nested levels of mutable objects communicate with the MA API in order to reduce allocation. Calling A * b requires approximately 40 MiB due to 2 M allocations as it does not exploit any mutability.

    using MutableArithmetics  # or `using PolynomialsMutableArithmetics` to register `Polynomials` with `MutableArithmetics`
    +
    +const MA = MutableArithmetics
    +MA.operate(*, A, b)

    exploits the mutability and hence only allocates approximately 70 KiB due to 4 k allocations.

    If the resulting vector is already allocated, e.g.,

    z(d) = Polynomial([zero(BigInt) for i in 1:d])
    +c = [z(2d - 1) for i in 1:m]

    then we can exploit its mutability with

    MA.operate!(MA.add_mul, c, A, b)

    to reduce the allocation down to 48 bytes due to 3 allocations.

    These remaining allocations are due to the BigInt buffer used to store the result of intermediate multiplications. This buffer can be preallocated with:

    buffer = MA.buffer_for(MA.add_mul, typeof(c), typeof(A), typeof(b))
    +MA.buffered_operate!(buffer, MA.add_mul, c, A, b)

    then the second line is allocation-free.

    The MA.@rewrite macro rewrite an expression into an equivalent code that exploit the mutability of the intermediate results. For instance

    MA.@rewrite(A1 * b1 + A2 * b2)

    is rewritten into

    c = MA.operate!(MA.add_mul, MA.Zero(), A1, b1)
    +MA.operate!(MA.add_mul, c, A2, b2)

    which is equivalent to

    c = MA.operate(*, A1, b1)
    +MA.mutable_operate!(MA.add_mul, c, A2, b2)
    Note

    Note that currently, only the Polynomial and Polynomials.PnPolynomial types implement the API and only

    part of it is implemented

    PolyCompat

    While not an extension, the older Poly type that this package used prior to v0.7 is implemented as an alternate basis and provided on an opt-in bases by executing using Polynomials.PolyCompat. This is to provide support for older code bases.

    diff --git a/v4.0.0/index.html b/v4.0.0/index.html new file mode 100644 index 00000000..0802fea8 --- /dev/null +++ b/v4.0.0/index.html @@ -0,0 +1,388 @@ + +Home · Polynomials.jl

    Polynomials.jl

    Polynomials.jl is a Julia package that provides basic arithmetic, integration, differentiation, evaluation, root finding, and data fitting for univariate polynomials.

    The Polynomials package is hosted on GitHub and installed as other Julia packages. As of version v3.0.0 Julia version 1.6 or higher is required.

    The package can be loaded into the current session through

    using Polynomials

    Construction and Evaluation

    Construct a polynomial from its coefficients, lowest order first.

    julia> Polynomial([1,0,3,4])
    +Polynomial(1 + 3*x^2 + 4*x^3)

    An optional variable parameter can be added.

    julia> Polynomial([1,2,3], :s)
    +Polynomial(1 + 2*s + 3*s^2)

    Construct a polynomial from its roots.

    julia> fromroots([1,2,3]) # (x-1)*(x-2)*(x-3)
    +Polynomial(-6 + 11*x - 6*x^2 + x^3)

    Evaluate the polynomial p at 1 using call notation:

    julia> p = Polynomial([1, 0, -1])
    +Polynomial(1 - x^2)
    +
    +julia> p(1)
    +0
    +

    The Polynomial constructor stores all coefficients using the standard basis with a vector. Other types (e.g. ImmutablePolynomial, SparsePolynomial, or FactoredPolynomial) use different back-end containers which may have advantage for some uses.

    Arithmetic

    The usual arithmetic operators are overloaded to work on polynomials, and combinations of polynomials and scalars.

    julia> p = Polynomial([1,2])
    +Polynomial(1 + 2*x)
    +
    +julia> q = Polynomial([1, 0, -1])
    +Polynomial(1 - x^2)
    +
    +julia> 2p
    +Polynomial(2 + 4*x)
    +
    +julia> 2 + p
    +Polynomial(3 + 2*x)
    +
    +julia> p - q
    +Polynomial(2*x + x^2)
    +
    +julia> p * q
    +Polynomial(1 + 2*x - x^2 - 2*x^3)
    +
    +julia> q / 2
    +Polynomial(0.5 - 0.5*x^2)
    +
    +julia> q ÷ p  # `div`, also `rem` and `divrem`
    +Polynomial(0.25 - 0.5*x)

    Note that operations involving polynomials with different variables will error.

    julia> p = Polynomial([1, 2, 3], :x)
    +Polynomial(1 + 2*x + 3*x^2)
    +
    +julia> q = Polynomial([1, 2, 3], :s)
    +Polynomial(1 + 2*s + 3*s^2)
    +
    +julia> p + q
    +ERROR: ArgumentError: Polynomials have different indeterminates
    +[...]

    Except for operations involving constant polynomials.

    julia> p = Polynomial([1, 2, 3], :x)
    +Polynomial(1 + 2*x + 3*x^2)
    +
    +julia> q = Polynomial(1, :y)
    +Polynomial(1)
    +
    +julia> p + q
    +Polynomial(2 + 2*x + 3*x^2)

    Mixing polynomial types

    Arithmetic of different polynomial types is supported through promotion to a common type, which is typically the Polynomial type, but may be the LaurentPolynomial type when negative powers of the indeterminate are possible:

    julia> p, q = ImmutablePolynomial([1,2,3]), Polynomial([3,2,1])
    +(ImmutablePolynomial(1 + 2*x + 3*x^2), Polynomial(3 + 2*x + x^2))
    +
    +julia> p + q
    +Polynomial(4 + 4*x + 4*x^2)
    +
    +julia> p, q = ImmutablePolynomial([1,2,3]), SparsePolynomial(Dict(0=>1, 2=>3, 10=>1))
    +(ImmutablePolynomial(1 + 2*x + 3*x^2), SparsePolynomial(1 + 3*x^2 + x^10))
    +
    +julia> p + q
    +LaurentPolynomial(2 + 2*x + 6*x² + x¹⁰)

    Integrals and Derivatives

    Integrate the polynomial p term by term, optionally adding constant term C. For non-zero polynomials, the degree of the resulting polynomial is one higher than the degree of p.

    julia> integrate(Polynomial([1, 0, -1]))
    +Polynomial(1.0*x - 0.3333333333333333*x^3)
    +
    +julia> integrate(Polynomial([1, 0, -1]), 2)
    +Polynomial(2.0 + 1.0*x - 0.3333333333333333*x^3)

    Differentiate the polynomial p term by term. For non-zero polynomials, the degree of the resulting polynomial is one lower than the degree of p.

    julia> derivative(Polynomial([1, 3, -1]))
    +Polynomial(3 - 2*x)

    Root-finding

    Return the d roots (or zeros) of the degree d polynomial p.

    julia> roots(Polynomial([1, 0, -1]))
    +2-element Vector{Float64}:
    + -1.0
    +  1.0
    +
    +julia> roots(Polynomial([1, 0, 1]))
    +2-element Vector{ComplexF64}:
    + 0.0 - 1.0im
    + 0.0 + 1.0im
    +
    +julia> roots(Polynomial([0, 0, 1]))
    +2-element Vector{Float64}:
    + 0.0
    + 0.0

    By design, this is not type-stable; the return type may be real or complex.

    The default roots function uses the eigenvalues of the companion matrix for a polynomial. This is an 𝑶(n^3) operation.

    For polynomials with BigFloat coefficients, the GenericLinearAlgebra package can be seamlessly used:

    julia> p = fromroots(Polynomial{BigFloat}, [1,2,3])
    +Polynomial(-6.0 + 11.0*x - 6.0*x^2 + 1.0*x^3)
    +
    +julia> roots(p)
    +ERROR: MethodError: no method matching eigvals!(::Matrix{BigFloat})
    +[...]
    +
    +julia> using GenericLinearAlgebra
    +
    +julia> roots(p)
    +3-element Vector{Complex{BigFloat}}:
    + 0.9999999999999999999999999999999999999999999999999999999999999999999999999999655 + 0.0im
    +  1.999999999999999999999999999999999999999999999999999999999999999999999999999931 - 0.0im
    +  2.999999999999999999999999999999999999999999999999999999999999999999999999999793 + 0.0im

    Comments on root finding

    • The PolynomialRoots.jl package provides an alternative approach for finding complex roots to univariate polynomials that is more performant than roots. It is based on an algorithm of Skowron and Gould.
    julia> import PolynomialRoots # import as `roots` conflicts
    +
    +julia> p = fromroots(Polynomial, [1,2,3])
    +Polynomial(-6 + 11*x - 6*x^2 + x^3)
    +
    +julia> PolynomialRoots.roots(coeffs(p))
    +3-element Vector{ComplexF64}:
    +  3.000000000000001 - 0.0im
    + 1.9999999999999993 + 0.0im
    + 1.0000000000000002 + 0.0im

    The roots are always returned as complex numbers.

    • The FastPolynomialRoots package provides an interface to FORTRAN code implementing an algorithm of Aurentz, Mach, Robol, Vandrebril, and Watkins. that can handle very large polynomials (it is 𝑶(n^2) and backward stable). The AMRVW.jl package implements the algorithm in Julia, allowing the use of other number types.
    julia> using AMRVW
    +
    +julia> AMRVW.roots(float.(coeffs(p)))
    +3-element Vector{ComplexF64}:
    + 0.9999999999999997 + 0.0im
    + 2.0000000000000036 + 0.0im
    + 2.9999999999999964 + 0.0im

    The roots are returned as complex numbers.

    Both PolynomialRoots and AMRVW are generic and work with BigFloat coefficients, for example.

    The AMRVW package works with much larger polynomials than either roots or PolynomialRoots.roots. For example, the roots of this 1000 degree random polynomial are quickly and accurately solved for:

    julia> filter(isreal, AMRVW.roots(rand(1001) .- 1/2))
    +2-element Vector{ComplexF64}:
    +  0.993739974989572 + 0.0im
    + 1.0014677846996498 + 0.0im
    • The Hecke package has a roots function. The Hecke package utilizes the Arb library for performant, high-precision numbers:
    julia> import Hecke # import as `roots` conflicts
    +
    +julia> Qx, x = Hecke.PolynomialRing(Hecke.QQ)
    +(Univariate Polynomial Ring in x over Rational Field, x)
    +
    +julia> q = (x-1)*(x-2)*(x-3)
    +x^3 - 6*x^2 + 11*x - 6
    +
    +julia> Hecke.roots(q)
    +3-element Vector{Nemo.fmpq}:
    + 2
    + 1
    + 3

    This next polynomial has 3 real roots, 2 of which are in a cluster; Hecke quickly identifies them:

    julia> p = -1 + 254*x - 16129*x^2 + 1*x^17
    +x^17 - 16129*x^2 + 254*x - 1
    +
    +julia> filter(isreal, Hecke._roots(p, 200)) # `_roots` not `roots`
    +3-element Vector{Nemo.acb}:
    + [0.007874015748031496052667730054749907629383970426203662570129818116411192289734968717460531379762086419 +/- 3.10e-103]
    + [0.0078740157480314960733165219137540296086246589982151627453855179522742093785877068332663198273096875302 +/- 9.31e-104]
    + [1.9066348541790688341521872066398429982632947292434604847312536201982593209326201234353468172497707769372732739429697289 +/- 7.14e-119]

    To find just the real roots of a polynomial with real coefficients there are a few additional options to solving for all the roots and filtering by isreal.

    • The package IntervalRootFinding identifies real zeros of univariate functions and can be used to find isolating intervals for the real roots. For example,
    julia> using Polynomials, IntervalArithmetic
    +
    +julia> import IntervalRootFinding # its `roots` method conflicts with `roots`
    +
    +julia> p = fromroots(Polynomial, [1,2,3])
    +Polynomial(-6 + 11*x - 6*x^2 + x^3)
    +
    +julia> IntervalRootFinding.roots(x -> p(x), 0..10)
    +3-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:
    + Root([0.999999, 1.00001], :unique)
    + Root([1.99999, 2.00001], :unique)
    + Root([2.99999, 3.00001], :unique)

    The output is a set of intervals. Those flagged with :unique are guaranteed to contain a unique root.

    • The RealPolynomialRoots package provides a function ANewDsc to find isolating intervals for the roots of a square-free polynomial, specified through its coefficients:
    julia> using RealPolynomialRoots
    +
    +julia> st = ANewDsc(coeffs(p))
    +There were 3 isolating intervals found:
    +[2.62…, 3.62…]₂₅₆
    +[1.5…, 2.62…]₂₅₆
    +[-0.50…, 1.5…]₂₅₆

    These isolating intervals can be refined to find numeric estimates for the roots over BigFloat values.

    julia> refine_roots(st)
    +3-element Vector{BigFloat}:
    + 2.99999999999999999999...
    + 2.00000000000000000000...
    + 1.00000000000000000000...

    This specialized algorithm can identify very nearby roots. For example, returning to this Mignotte-type polynomial:

    julia> p = SparsePolynomial(Dict(0=>-1, 1=>254, 2=>-16129, 17=>1))
    +SparsePolynomial(-1 + 254*x - 16129*x^2 + x^17)
    +
    +julia> ANewDsc(coeffs(p))
    +There were 3 isolating intervals found:
    +[1.5…, 3.5…]₅₃
    +[0.0078740157480314960682066…, 0.0078740157480314960873178…]₁₃₉
    +[0.0078740157480314960492543…, 0.0078740157480314960682066…]₁₃₉

    IntervalRootFinding has issues disambiguating the clustered roots of this example:

    julia> IntervalRootFinding.roots(x -> p(x), 0..3.5)
    +7-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:
    + Root([1.90663, 1.90664], :unique)
    + Root([0.00787464, 0.00787468], :unknown)
    + Root([0.00787377, 0.00787387], :unknown)
    + Root([0.00787405, 0.00787412], :unknown)
    + Root([0.00787396, 0.00787406], :unknown)
    + Root([0.00787425, 0.00787431], :unknown)
    + Root([0.00787394, 0.00787397], :unknown)

    For this example, filter(isreal, Hecke._roots(p)) also isolates the three real roots, but not quite as quickly.


    Most of the root finding algorithms have issues when the roots have multiplicities. For example, both ANewDsc and Hecke.roots assume a square free polynomial. For non-square free polynomials:

    • The Polynomials.Multroot.multroot function is available for finding the roots of a polynomial and their multiplicities. This is based on work of Zeng.

    Here we see IntervalRootFinding.roots having trouble isolating the roots due to the multiplicities:

    julia> p = fromroots(Polynomial, [1,2,2,3,3])
    +Polynomial(-36 + 96*x - 97*x^2 + 47*x^3 - 11*x^4 + x^5)
    +
    +julia> IntervalRootFinding.roots(x -> p(x), 0..10)
    +335-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:
    + Root([1.99999, 2], :unknown)
    + Root([1.99999, 2], :unknown)
    + Root([3, 3.00001], :unknown)
    + Root([2.99999, 3], :unknown)
    + ⋮
    + Root([2.99999, 3], :unknown)
    + Root([2, 2.00001], :unknown)

    The roots function identifies the roots, but the multiplicities would need identifying:

    julia> roots(p)
    +5-element Vector{Float64}:
    + 1.000000000000011
    + 1.9999995886034314
    + 2.0000004113969276
    + 2.9999995304339646
    + 3.0000004695656672

    Whereas, the roots along with the multiplicity structure are correctly identified with multroot:

    julia> Polynomials.Multroot.multroot(p)
    +(values = [1.0000000000000004, 1.9999999999999984, 3.0000000000000018], multiplicities = [1, 2, 2], κ = 35.11176306900731, ϵ = 0.0)

    The square_free function can help:

    julia> q = Polynomials.square_free(p)
    +ANewDsc(q)
    +Polynomial(-0.20751433915978448 + 0.38044295512633425*x - 0.20751433915986722*x^2 + 0.03458572319332053*x^3)
    +
    +julia> IntervalRootFinding.roots(x -> q(x), 0..10)
    +3-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:
    + Root([0.999999, 1.00001], :unique)
    + Root([1.99999, 2.00001], :unique)
    + Root([2.99999, 3.00001], :unique)

    Similarly:

    julia> ANewDsc(coeffs(q))
    +There were 3 isolating intervals found:
    +[2.62…, 3.62…]₂₅₆
    +[1.5…, 2.62…]₂₅₆
    +[-0.50…, 1.5…]₂₅₆

    Fitting a polynomial to arbitrary data

    The fit function will fit a polynomial (of degree deg) to data x and y using polynomial interpolation or a (weighted) least-squares approximation.

    Fit a polynomial (of degree deg or less) to x and y using a least-squares approximation.

    julia> xs = 0:4; ys = @. exp(-xs) + sin(xs);
    +
    +julia> p =  fit(xs, ys); map(x -> round(x, digits=4), p)
    +Polynomial(1.0 + 0.0593*x + 0.3959*x^2 - 0.2846*x^3 + 0.0387*x^4)
    +
    +julia> p = fit(ChebyshevT, xs, ys, 2); map(x -> round(x, digits=4), p)
    +ChebyshevT(0.5413⋅T_0(x) - 0.8991⋅T_1(x) - 0.4238⋅T_2(x))

    This provides a visual example:

    using Plots, Polynomials
    +
    +xs = range(0, 10, length=10)
    +ys = @. exp(-xs)
    +
    +f = fit(xs, ys)     # degree = length(xs) - 1
    +f2 = fit(xs, ys, 2) # degree = 2
    +
    +scatter(xs, ys, markerstrokewidth=0, label="Data")
    +plot!(f, extrema(xs)..., label="Interpolation")
    +plot!(f2, extrema(xs)..., label="Quadratic Fit")

    Other bases

    A polynomial, e.g. a_0 + a_1 x + a_2 x^2 + ... + a_n x^n, can be seen as a collection of coefficients, [a_0, a_1, ..., a_n], relative to some polynomial basis. The most familiar basis being the standard one: 1, x, x^2, ... Alternative bases are possible. The ChebyshevT polynomials are implemented, as an example. The constructor is ChebyshevT, an exposed alias for MutableDensePolynomial{ChebyshevTBasis}.

    julia> p1 = ChebyshevT([1.0, 2.0, 3.0])
    +ChebyshevT(1.0⋅T_0(x) + 2.0⋅T_1(x) + 3.0⋅T_2(x))
    +
    +julia> p2 = ChebyshevT{Float64}([0, 1, 2])
    +ChebyshevT(1.0⋅T_1(x) + 2.0⋅T_2(x))
    +
    +julia> p1 + p2
    +ChebyshevT(1.0⋅T_0(x) + 3.0⋅T_1(x) + 5.0⋅T_2(x))
    +
    +julia> p1 * p2
    +ChebyshevT(4.0⋅T_0(x) + 4.5⋅T_1(x) + 3.0⋅T_2(x) + 3.5⋅T_3(x) + 3.0⋅T_4(x))
    +
    +julia> derivative(p1)
    +ChebyshevT(2.0⋅T_0(x) + 12.0⋅T_1(x))
    +
    +julia> integrate(p2)
    +ChebyshevT(- 1.0⋅T_1(x) + 0.25⋅T_2(x) + 0.3333333333333333⋅T_3(x))
    +
    +julia> convert(Polynomial, p1)
    +Polynomial(-2.0 + 2.0*x + 6.0*x^2)
    +
    +julia> convert(ChebyshevT, Polynomial([1.0, 2,  3]))
    +ChebyshevT(2.5⋅T_0(x) + 2.0⋅T_1(x) + 1.5⋅T_2(x))

    Iteration

    If its basis is implicit, then a polynomial may be seen as just a vector of coefficients. Vectors are 1-based, but, for convenience, most polynomial types are naturally 0-based, for purposes of indexing (e.g. getindex, setindex!, eachindex). Iteration over a polynomial steps through the underlying coefficients.

    julia> as = [1,2,3,4,5]; p = Polynomial(as);
    +
    +julia> as[3], p[2], collect(p)[3]
    +(3, 3, 3)

    The pairs iterator, iterates over the indices and coefficients, attempting to match how pairs applies to the underlying storage model:

    julia> v = [1,2,0,4]
    +4-element Vector{Int64}:
    + 1
    + 2
    + 0
    + 4
    +
    +julia> p,ip,sp,lp = Polynomial(v), ImmutablePolynomial(v), SparsePolynomial(v), LaurentPolynomial(v, -1);
    +
    +julia> collect(pairs(p))
    +4-element Vector{Pair{Int64, Int64}}:
    + 0 => 1
    + 1 => 2
    + 2 => 0
    + 3 => 4
    +
    +julia> collect(pairs(ip)) == collect(pairs(p))
    +true
    +
    +julia> collect(pairs(sp)) # unordered dictionary with only non-zero terms
    +3-element Vector{Pair{Int64, Int64}}:
    + 0 => 1
    + 3 => 4
    + 1 => 2
    +
    +julia> collect(pairs(lp))
    +4-element Vector{Pair{Int64, Int64}}:
    + -1 => 1
    +  0 => 2
    +  1 => 0
    +  2 => 4

    The unexported monomials iterator iterates over the terms (p[i]*Polynomials.basis(p,i)) of the polynomial:

    julia> p = Polynomial([1,2,0,4], :u)
    +Polynomial(1 + 2*u + 4*u^3)
    +
    +julia> collect(Polynomials.monomials(p))
    +4-element Vector{Any}:
    + Polynomial(1)
    + Polynomial(2*u)
    + Polynomial(0)
    + Polynomial(4*u^3)

    The map function for polynomials is idiosyncratic, as iteration over polynomials is over the vector of coefficients, but map will also maintain the type of the polynomial. Here we use map to smooth out the round-off error coming from the root-finding algorithm used internally when converting to the FactoredPolynomial type:

    julia> p = Polynomial([24, -50, 35, -10, 1])
    +Polynomial(24 - 50*x + 35*x^2 - 10*x^3 + x^4)
    +
    +julia> q = convert(FactoredPolynomial, p) # noisy form of `factor`:
    +FactoredPolynomial((x - 4.0000000000000036) * (x - 2.9999999999999942) * (x - 1.0000000000000002) * (x - 2.0000000000000018))
    +
    +julia> map(x -> round(x, digits=10), q)
    +FactoredPolynomial((x - 4.0) * (x - 2.0) * (x - 3.0) * (x - 1.0))

    The element type

    Relationship between the T and P{T,X}

    The addition of a polynomial and a scalar, such as

    julia> using Polynomials
    +
    +julia> p = Polynomial([1,2,3], :x)
    +Polynomial(1 + 2*x + 3*x^2)
    +
    +julia> p + 3
    +Polynomial(4 + 2*x + 3*x^2)

    seems natural, but in Julia, as 3 is of type Int and p of type Polynomial{Int,:x} some addition must be defined. The basic idea is that 3 is promoted to the constant polynomial 3 with indeterminate :x as 3*one(p) and then addition of p + 3*one(p) is performed.

    This identification of a scalar with a constant polynomial can go both ways. If q is a constant polynomial of type Polynomial{Int, :y} then we should expect that p+q would be defined, as p plus the constant term of q. Indeed this is the case

    julia> q = Polynomial(3, :y)
    +Polynomial(3)
    +
    +julia> p + q
    +Polynomial(4 + 2*x + 3*x^2)

    If q is non-constant, such as variable(Polynomial, :y), then there would be an error due to the mismatched symbols. (The mathematical result would need a multivariate polynomial, not a univariate polynomial, as this package provides.)

    The same conversion is done for polynomial multiplication: constant polynomials are treated as numbers; non-constant polynomials must have their symbols match.

    There is an oddity – though the following two computations look the same, they are technically different:

    julia> one(Polynomial, :x) + one(Polynomial, :y)
    +Polynomial(2.0)
    +
    +julia> one(Polynomial, :y) + one(Polynomial, :x)
    +Polynomial(2.0)

    Both are constant polynomials over Int, but the first has the indeterminate :y, the second :x.

    This technical difference causes no issues with polynomial addition or multiplication, as there constant polynomials are treated as numbers, but can be an issue when constant polynomials are used as array elements.

    For arrays, the promotion of numbers to polynomials, allows natural constructions like:

    julia> p = Polynomial([1,2],:x)
    +Polynomial(1 + 2*x)
    +
    +julia> q = Polynomial([1,2],:y)  # non-constant polynomials with different indeterminates
    +Polynomial(1 + 2*y)
    +
    +julia> [1 p]
    +1×2 Matrix{Polynomial{Int64, :x}}:
    + Polynomial(1)  Polynomial(1 + 2*x)
    +
    +julia> [1 one(q)]
    +1×2 Matrix{Polynomial{Int64, :y}}:
    + Polynomial(1)  Polynomial(1)

    However, as there would be an ambiguous outcome of the following

    julia> [one(p) one(q)]
    +ERROR: ArgumentError: Polynomials have different indeterminates
    +[...]

    an error is thrown.

    In general, arrays with mixtures of non-constant polynomials with different indeterminates will error. By default, an error will occur when constant polynomials with different indeterminates are used as components. However, for typed arrays, conversion will allow such constructs to be used.

    Using one(q) for a constant polynomial with indeterminate :y we have:

    julia> P = typeof(p)
    +Polynomial{Int64, :x} (alias for Polynomials.MutableDensePolynomial{Polynomials.StandardBasis, Int64, :x})
    +
    +julia> P[one(p) one(q)]
    +1×2 Matrix{Polynomial{Int64, :x}}:
    + Polynomial(1)  Polynomial(1)

    Of course, by not being explicit, there are sill gotchas. For example, we can construct this matrix without a specific types:

    julia> [one(p), one(q)+one(p)]
    +2-element Vector{Polynomial{Int64, :x}}:
    + Polynomial(1)
    + Polynomial(2)

    but not this one:

    julia> [one(p), one(p) + one(q)]
    +ERROR: ArgumentError: Polynomials have different indeterminates
    +[...]

    Also, mixing types can result in unspecific symbols, as this example shows:

    julia> [1 p; p 1] + [1 2one(q); 3 4] # array{P{T,:x}} + array{P{T,:y}}
    +2×2 Matrix{Polynomial{Int64}}:
    + Polynomial(2)        Polynomial(3 + 2*x)
    + Polynomial(4 + 2*x)  Polynomial(5)

    Though were a non-constant polynomial with indeterminate y replacing 2one(q) above, that addition would throw an error.

    Non-number types for T

    The coefficients of the polynomial may be non-number types, such as matrices or other polynomials, albeit not every operation is fully supported.

    For example, a polynomial with matrix coefficients, might be constructed with:

    julia> using Polynomials
    +
    +julia> a,b,c = [1 0;2 1], [1 0; 3 1], [1 0; 4 1]
    +([1 0; 2 1], [1 0; 3 1], [1 0; 4 1])
    +
    +julia> p = Polynomial([a,b,c])
    +Polynomial([1 0; 2 1] + [1 0; 3 1]*x + [1 0; 4 1]*x^2)
    +
    +julia> q = derivative(p)
    +Polynomial([1 0; 3 1] + [2 0; 8 2]*x)

    Various operations are available, derivative was shown above, here are the vector-space operations:

    julia> 2p
    +Polynomial([2 0; 4 2] + [2 0; 6 2]*x + [2 0; 8 2]*x^2)
    +
    +julia> p + q
    +Polynomial([2 0; 5 2] + [3 0; 11 3]*x + [1 0; 4 1]*x^2)

    polynomial multiplication:

    julia> p * q
    +Polynomial([1 0; 5 1] + [3 0; 18 3]*x + [3 0; 21 3]*x^2 + [2 0; 16 2]*x^3)

    polynomial evaluation, here either with a scalar or a matrix:

    julia> p(2)
    +2×2 Matrix{Int64}:
    +  7  0
    + 24  7
    +
    +julia> p(b)
    +2×2 Matrix{Int64}:
    +  3  0
    + 18  3

    But if the type T lacks support of some generic functions, such as zero(T) and one(T), then there may be issues. For example, when T <: AbstractMatrix the output of p[degree(p)+1] is an error, as the implementation assumes zero(T) is defined. For static arrays, this isn't an issue, as there is support for zero(T). Other polynomial types, such as SparsePolynomial have less support, as some specialized methods assume more of the generic interface be implemented.

    Similarly, using polynomials for T is a possibility:

    julia> a,b,c = Polynomial([1],:y), Polynomial([0,1],:y), Polynomial([0,0,1],:y)
    +(Polynomial(1), Polynomial(y), Polynomial(y^2))
    +
    +julia> p = Polynomial([a,b,c], :x)
    +Polynomial(Polynomial(1) + Polynomial(y)*x + Polynomial(y^2)*x^2)
    +
    +julia> q = derivative(p)
    +Polynomial(Polynomial(y) + Polynomial(2*y^2)*x)

    Again, much works:

    julia> 2p
    +Polynomial(Polynomial(2) + Polynomial(2*y)*x + Polynomial(2*y^2)*x^2)
    +
    +julia> p + q
    +Polynomial(Polynomial(1 + y) + Polynomial(y + 2*y^2)*x + Polynomial(y^2)*x^2)
    +
    +julia> p(2)
    +Polynomial(1 + 2*y + 4*y^2)
    +
    +julia> p(b)
    +Polynomial(1 + y^2 + y^4)

    But much doesn't. For example, implicit promotion can fail. For example, the scalar multiplication p * b will fail, as the methods assume this is the fallback polynomial multiplication and not the intended scalar multiplication.

    Rational functions

    The package provides support for rational functions – fractions of polynomials (for most types). The construction of the basic type mirrors the construction of rational numbers.

    julia> P = FactoredPolynomial
    +FactoredPolynomial
    +
    +julia> p,q = fromroots(P, [1,2,3,4]), fromroots(P, [2,2,3,5])
    +(FactoredPolynomial((x - 4) * (x - 2) * (x - 3) * (x - 1)), FactoredPolynomial((x - 5) * (x - 2)² * (x - 3)))
    +
    +julia> pq = p // q
    +((x - 4) * (x - 2) * (x - 3) * (x - 1)) // ((x - 5) * (x - 2)² * (x - 3))
    +
    +julia> lowest_terms(pq)
    +((x - 4.0) * (x - 1.0)) // ((x - 5.0) * (x - 2.0))
    +
    +julia> d,r = residues(pq); r
    +Dict{Float64, Vector{Float64}} with 2 entries:
    +  5.0 => [1.33333]
    +  2.0 => [0.666667]
    +
    +julia> x = variable(p);
    +
    +julia> for (λ, rs) ∈ r # reconstruct p/q from output of `residues`
    +           for (i,rᵢ) ∈ enumerate(rs)
    +               d += rᵢ//(x-λ)^i
    +           end
    +       end
    +
    +
    +julia> d
    +((x - 4.0) * (x - 1.0000000000000002)) // ((x - 5.0) * (x - 2.0))

    A basic plot recipe is provided.

    using Plots, Polynomials
    +P = FactoredPolynomial
    +p,q = fromroots(P, [1,2,3]), fromroots(P, [2,3,3,0])
    +plot(p//q)
    ┌ Warning: Increasing Δ, terminating search
    +└ @ Polynomials.Multroot ~/work/Polynomials.jl/Polynomials.jl/src/polynomials/multroot.jl:283

    • StaticUnivariatePolynomials.jl Fixed-size univariate polynomials backed by a Tuple

    • MultiPoly.jl for sparse multivariate polynomials

    • DynamicPolynomals.jl Multivariate polynomials implementation of commutative and non-commutative variables

    • MultivariatePolynomials.jl for multivariate polynomials and moments of commutative or non-commutative variables

    • PolynomialRings.jl A library for arithmetic and algebra with multi-variable polynomials.

    • AbstractAlgebra.jl, Nemo.jl for generic polynomial rings, matrix spaces, fraction fields, residue rings, power series, Hecke.jl for algebraic number theory.

    • LaurentPolynomials.jl A package for Laurent polynomials.

    • CommutativeAlgebra.jl the start of a computer algebra system specialized to discrete calculations with support for polynomials.

    • PolynomialRoots.jl for a fast complex polynomial root finder. For larger degree problems, also FastPolynomialRoots and AMRVW.

    • SpecialPolynomials.jl A package providing various polynomial types beyond the standard basis polynomials in Polynomials.jl. Includes interpolating polynomials, Bernstein polynomials, and classical orthogonal polynomials.

    • ClassicalOrthogonalPolynomials.jl A Julia package for classical orthogonal polynomials and expansions. Includes chebyshevt, chebyshevu, legendrep, jacobip, ultrasphericalc, hermiteh, and laguerrel. The same repository includes FastGaussQuadrature.jl, FastTransforms.jl, and the ApproxFun packages.

    Contributing

    If you are interested in this project, feel free to open an issue or pull request! In general, any changes must be thoroughly tested, allow deprecation, and not deviate too far from the common interface. All PR's must have an updated project version, as well, to keep the continuous delivery cycle up-to-date.

    diff --git a/v4.0.0/polyfit.svg b/v4.0.0/polyfit.svg new file mode 100644 index 00000000..e114ecff --- /dev/null +++ b/v4.0.0/polyfit.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v4.0.0/polynomials/chebyshev/index.html b/v4.0.0/polynomials/chebyshev/index.html new file mode 100644 index 00000000..42553127 --- /dev/null +++ b/v4.0.0/polynomials/chebyshev/index.html @@ -0,0 +1,25 @@ + +Chebyshev · Polynomials.jl

    Chebyshev Polynomials

    The Chebyshev polynomials are two sequences of polynomials, $T_n$ and $U_n$. The Chebyshev polynomials of the first kind, $T_n$, can be defined by the recurrence relation:

    \[T_0(x)=1,\ T_1(x)=x\]

    \[T_{n+1}(x) = 2xT_n(x)-T_{n-1}(x)\]

    The Chebyshev polynomioals of the second kind, $U_n(x)$, can be defined by

    \[U_0(x)=1,\ U_1(x)=2x\]

    \[U_{n+1}(x) = 2xU_n(x) - U_{n-1}(x)\]

    Both $T_n$ and $U_n$ have degree $n$, and any polynomial of degree $n$ may be uniquely written as a linear combination of the polynomials $T_0$, $T_1$, ..., $T_n$ (similarly with $U_n$).

    First Kind

    Polynomials.ChebyshevTType
    ChebyshevT{T, X}(coeffs::AbstractVector)

    Chebyshev polynomial of the first kind.

    Construct a polynomial from its coefficients coeffs, lowest order first, optionally in terms of the given variable var, which can be a character, symbol, or string.

    Note

    ChebyshevT is not axis-aware, and it treats coeffs simply as a list of coefficients with the first index always corresponding to the coefficient of T_0(x).

    Examples

    julia> using Polynomials
    +
    +julia> p = ChebyshevT([1, 0, 3, 4])
    +ChebyshevT(1⋅T_0(x) + 3⋅T_2(x) + 4⋅T_3(x))
    +
    +julia> ChebyshevT([1, 2, 3, 0], :s)
    +ChebyshevT(1⋅T_0(s) + 2⋅T_1(s) + 3⋅T_2(s))
    +
    +julia> one(ChebyshevT)
    +ChebyshevT(1.0⋅T_0(x))
    +
    +julia> p(0.5)
    +-4.5
    +
    +julia> Polynomials.evalpoly(5.0, p, false) # bypasses the domain check done in p(5.0)
    +2088.0

    The latter shows how to evaluate a ChebyshevT polynomial outside of its domain, which is [-1,1]. (For newer versions of Julia, evalpoly is an exported function from Base with methods extended in this package, so the module qualification is unnecessary.

    Note

    The Chebyshev polynomials are also implemented in ApproxFun, ClassicalOrthogonalPolynomials.jl, FastTransforms.jl, and SpecialPolynomials.jl.

    source

    The ChebyshevT type holds coefficients representing the polynomial $a_0 T_0 + a_1 T_1 + ... + a_n T_n$.

    For example, the basis polynomial $T_4$ can be represented with ChebyshevT([0,0,0,0,1]).

    Conversion

    ChebyshevT can be converted to Polynomial and vice-versa.

    julia> c = ChebyshevT([1, 0, 3, 4])
    +ChebyshevT(1⋅T_0(x) + 3⋅T_2(x) + 4⋅T_3(x))
    +
    +
    +julia> p = convert(Polynomial, c)
    +Polynomial(-2.0 - 12.0*x + 6.0*x^2 + 16.0*x^3)
    +
    +julia> convert(ChebyshevT, p)
    +ChebyshevT(1.0⋅T_0(x) + 3.0⋅T_2(x) + 4.0⋅T_3(x))
    diff --git a/v4.0.0/polynomials/polynomial/index.html b/v4.0.0/polynomials/polynomial/index.html new file mode 100644 index 00000000..54cbe18f --- /dev/null +++ b/v4.0.0/polynomials/polynomial/index.html @@ -0,0 +1,136 @@ + +Polynomial · Polynomials.jl

    Polynomial

    Polynomial types using the standard basis.

    Polynomial

    Polynomials.PolynomialType
    Polynomial{T, X}(coeffs::AbstractVector{T}, [var = :x])

    Construct a polynomial from its coefficients coeffs, lowest order first, optionally in terms of the given variable var which may be a character, symbol, or a string.

    If $p = a_n x^n + \ldots + a_2 x^2 + a_1 x + a_0$, we construct this through Polynomial([a_0, a_1, ..., a_n]).

    The usual arithmetic operators are overloaded to work with polynomials as well as with combinations of polynomials and scalars. However, operations involving two polynomials of different variables causes an error except those involving a constant polynomial.

    Note

    Polynomial is not axis-aware, and it treats coeffs simply as a list of coefficients with the first index always corresponding to the constant term. In order to use the axis of coeffs as exponents, consider using a LaurentPolynomial or possibly a SparsePolynomial.

    Examples

    julia> using Polynomials
    +
    +julia> Polynomial([1, 0, 3, 4])
    +Polynomial(1 + 3*x^2 + 4*x^3)
    +
    +julia> Polynomial([1, 2, 3], :s)
    +Polynomial(1 + 2*s + 3*s^2)
    +
    +julia> one(Polynomial)
    +Polynomial(1.0)
    source

    Immutable Polynomial

    Polynomials.ImmutablePolynomialType
    ImmutablePolynomial{T, X, N}(coeffs)

    Construct an immutable (static) polynomial from its coefficients a₀, a₁, …, aₙ, lowest order first, optionally in terms of the given variable x where x can be a character, symbol, or string.

    If $p = a_n x^n + \ldots + a_2 x^2 + a_1 x + a_0$, we construct this through ImmutablePolynomial((a_0, a_1, ..., a_n)) (assuming a_n ≠ 0). As well, a vector or number can be used for construction.

    The usual arithmetic operators are overloaded to work with polynomials as well as with combinations of polynomials and scalars. However, operations involving two non-constant polynomials of different variables causes an error. Unlike other polynomials, setindex! is not defined for ImmutablePolynomials.

    As the degree of the polynomial (+1) is a compile-time constant, several performance improvements are possible. For example, immutable polynomials can take advantage of faster polynomial evaluation provided by evalpoly from Julia 1.4; similar methods are also used for addition and multiplication.

    However, as the degree is included in the type, promotion between immutable polynomials can not promote to a common type. As such, they are precluded from use in rational functions.

    Note

    ImmutablePolynomial is not axis-aware, and it treats coeffs simply as a list of coefficients with the first index always corresponding to the constant term.

    Examples

    julia> using Polynomials
    +
    +julia> ImmutablePolynomial((1, 0, 3, 4))
    +ImmutablePolynomial(1 + 3*x^2 + 4*x^3)
    +
    +julia> ImmutablePolynomial((1, 2, 3), :s)
    +ImmutablePolynomial(1 + 2*s + 3*s^2)
    +
    +julia> one(ImmutablePolynomial)
    +ImmutablePolynomial(1.0)
    Note

    This was modeled after StaticUnivariatePolynomials by @tkoolen.

    source

    Sparse Polynomial

    Polynomials.SparsePolynomialType
    SparsePolynomial{T, X}(coeffs::Dict{Int,T})

    Polynomials in the standard basis backed by a dictionary holding the non-zero coefficients. For polynomials of high degree, this might be advantageous.

    Examples:

    julia> using Polynomials
    +
    +julia> P  = SparsePolynomial;
    +
    +julia> p, q = P([1,2,3]), P([4,3,2,1])
    +(SparsePolynomial(1 + 2*x + 3*x^2), SparsePolynomial(4 + 3*x + 2*x^2 + x^3))
    +
    +julia> p + q
    +SparsePolynomial(5 + 5*x + 5*x^2 + x^3)
    +
    +julia> p * q
    +SparsePolynomial(4 + 11*x + 20*x^2 + 14*x^3 + 8*x^4 + 3*x^5)
    +
    +julia> p + 1
    +SparsePolynomial(2 + 2*x + 3*x^2)
    +
    +julia> q * 2
    +SparsePolynomial(8 + 6*x + 4*x^2 + 2*x^3)
    +
    +julia> p = Polynomials.basis(P, 10^9) - Polynomials.basis(P,0) # also P(Dict(0=>-1, 10^9=>1))
    +SparsePolynomial(-1.0 + 1.0*x^1000000000)
    +
    +julia> p(1)
    +0.0
    Note

    SparsePolynomial is an alias for MutableSparsePolynomial{StandardBasis}.

    source

    Laurent Polynomial

    Polynomials.LaurentPolynomialType
    LaurentPolynomial{T,X}(coeffs::AbstractVector, [m::Integer = 0], [var = :x])

    A Laurent polynomial is of the form a_{m}x^m + ... + a_{n}x^n where m,n are integers (not necessarily positive) with m <= n.

    The coeffs specify a_{m}, a_{m-1}, ..., a_{n}. The argument m represents the lowest exponent of the variable in the series, and is taken to be zero by default.

    Laurent polynomials and standard basis polynomials promote to Laurent polynomials. Laurent polynomials may be converted to a standard basis polynomial when m >= 0,

    Integration will fail if there is a x⁻¹ term in the polynomial.

    Note

    LaurentPolynomial is axis-aware, unlike the other polynomial types in this package.

    Examples:

    julia> using Polynomials
    +
    +julia> P = LaurentPolynomial;
    +
    +julia> p = P([1,1,1],  -1)
    +LaurentPolynomial(x⁻¹ + 1 + x)
    +
    +julia> q = P([1,1,1])
    +LaurentPolynomial(1 + x + x²)
    +
    +julia> pp = Polynomial([1,1,1])
    +Polynomial(1 + x + x^2)
    +
    +julia> p + q
    +LaurentPolynomial(x⁻¹ + 2 + 2*x + x²)
    +
    +julia> p * q
    +LaurentPolynomial(x⁻¹ + 2 + 3*x + 2*x² + x³)
    +
    +julia> p * pp
    +LaurentPolynomial(x⁻¹ + 2 + 3*x + 2*x² + x³)
    +
    +julia> pp - q
    +LaurentPolynomial(0)
    +
    +julia> derivative(p)
    +LaurentPolynomial(-x⁻² + 1)
    +
    +julia> integrate(q)
    +LaurentPolynomial(1.0*x + 0.5*x² + 0.3333333333333333*x³)
    +
    +julia> integrate(p)  # x⁻¹  term is an issue
    +ERROR: ArgumentError: Can't integrate Laurent polynomial with  `x⁻¹` term
    +
    +julia> integrate(P([1,1,1], -5))
    +LaurentPolynomial(-0.25*x⁻⁴ - 0.3333333333333333*x⁻³ - 0.5*x⁻²)
    +
    +julia> x⁻¹ = inv(variable(LaurentPolynomial)) # `inv` defined on monomials
    +LaurentPolynomial(1.0*x⁻¹)
    +
    +julia> p = Polynomial([1,2,3])
    +Polynomial(1 + 2*x + 3*x^2)
    +
    +julia> x = variable()
    +Polynomial(x)
    +
    +julia> x^degree(p) * p(x⁻¹) # reverses  coefficients
    +LaurentPolynomial(3.0 + 2.0*x + 1.0*x²)
    source

    Factored Polynomial

    Polynomials.FactoredPolynomialType
    FactoredPolynomial{T,X}

    A polynomial type that stores its data in a dictionary whose keys are the roots and whose values are the respective multiplicities along with a leading coefficient.

    The structure is utilized for scalar multiplication, polynomial multiplication and powers, the finding of roots, and the identification of a greatest common divisor. For other operations, say addition, the operation is done after converting to the Polynomial type then converting back. (This requires the identification of the roots, so is subject to numeric issues.)

    Examples

    julia> using Polynomials
    +
    +julia> p = FactoredPolynomial(Dict([0=>1, 1=>2, 3=>4]))
    +FactoredPolynomial(x * (x - 3)⁴ * (x - 1)²)
    +
    +julia> q = fromroots(FactoredPolynomial, [0,1,2,3])
    +FactoredPolynomial(x * (x - 2) * (x - 3) * (x - 1))
    +
    +julia> p*q
    +FactoredPolynomial(x² * (x - 2) * (x - 3)⁵ * (x - 1)³)
    +
    +julia> p^1000
    +FactoredPolynomial(x¹⁰⁰⁰ * (x - 3)⁴⁰⁰⁰ * (x - 1)²⁰⁰⁰)
    +
    +julia> gcd(p,q)
    +FactoredPolynomial(x * (x - 3) * (x - 1))
    +
    +julia> p = Polynomial([24, -50, 35, -10, 1])
    +Polynomial(24 - 50*x + 35*x^2 - 10*x^3 + x^4)
    +
    +julia> q = convert(FactoredPolynomial, p) # noisy form of `factor`:
    +FactoredPolynomial((x - 4.0000000000000036) * (x - 2.9999999999999942) * (x - 1.0000000000000002) * (x - 2.0000000000000018))
    +
    +julia> map(x->round(x, digits=12), q) # map works over factors and leading coefficient -- not coefficients in the standard basis
    +FactoredPolynomial((x - 4.0) * (x - 2.0) * (x - 3.0) * (x - 1.0))
    source

    Rational Function

    Polynomials.RationalFunctionType
    RationalFunction(p::AbstractPolynomial, q::AbstractPolynomial)
    +p // q

    Create a rational expression (p//q) from the two polynomials.

    Common factors are not cancelled by the constructor, as they are for the base Rational type. The lowest_terms(pq) function attempts that operation.

    For purposes of iteration, a rational function is treated like a two-element container.

    Examples

    julia> using Polynomials
    +
    +julia> p,q = fromroots(Polynomial, [1,2,3]), fromroots(Polynomial, [2,3,4])
    +(Polynomial(-6 + 11*x - 6*x^2 + x^3), Polynomial(-24 + 26*x - 9*x^2 + x^3))
    +
    +julia> pq = p // q
    +(-6 + 11*x - 6*x^2 + x^3) // (-24 + 26*x - 9*x^2 + x^3)
    +
    +julia> lowest_terms(pq)
    +(-0.333333 + 0.333333*x) // (-1.33333 + 0.333333*x)
    +
    +julia> pq(2.5)
    +-1.0
    +
    +julia> pq(2) # uses first non-`0/0` ratio of `p⁽ᵏ⁾/q⁽ᵏ⁾`
    +-0.5
    +
    +julia> pq^2
    +(36 - 132*x + 193*x^2 - 144*x^3 + 58*x^4 - 12*x^5 + x^6) // (576 - 1248*x + 1108*x^2 - 516*x^3 + 133*x^4 - 18*x^5 + x^6)
    +
    +julia> derivative(pq)
    +(-108 + 180*x - 111*x^2 + 30*x^3 - 3*x^4) // (576 - 1248*x + 1108*x^2 - 516*x^3 + 133*x^4 - 18*x^5 + x^6)
    Note

    The RationalFunctions.jl package was a helpful source of ideas.

    Note

    The ImmutablePolynomial type can not be used for rational functions, as the type requires the numerator and denominator to have the exact same type.

    source
    diff --git a/v4.0.0/rational_function.svg b/v4.0.0/rational_function.svg new file mode 100644 index 00000000..2b5a76df --- /dev/null +++ b/v4.0.0/rational_function.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v4.0.0/reference/index.html b/v4.0.0/reference/index.html new file mode 100644 index 00000000..2c52866f --- /dev/null +++ b/v4.0.0/reference/index.html @@ -0,0 +1,131 @@ + +Reference/API · Polynomials.jl

    Reference/API

    All polynomials have the following functionality. In some cases, there is not a direct function call and therefore the polynomials have to be converted to the standard Polynomial type before continuing.

    Arithmetic

    All AbstractPolynomials have basic arithmetic operations defined on them (+, -, *, /, ÷, %, ==).

    julia> p = Polynomial([1, 2])
    +Polynomial(1 + 2*x)
    +
    +julia> q = Polynomial([1, 0, -1])
    +Polynomial(1 - x^2)
    +
    +julia> 2p
    +Polynomial(2 + 4*x)
    +
    +julia> 2 + p
    +Polynomial(3 + 2*x)
    +
    +julia> p - q
    +Polynomial(2*x + x^2)
    +
    +julia> p * q
    +Polynomial(1 + 2*x - x^2 - 2*x^3)
    +
    +julia> q / 2
    +Polynomial(0.5 - 0.5*x^2)

    Inspection

    Polynomials.degreeFunction
    degree(::AbstractPolynomial)

    Return the degree of the polynomial, i.e. the highest exponent in the polynomial that has a nonzero coefficient.

    For standard basis polynomials the degree of the zero polynomial is defined to be $-1$. For Laurent type polynomials, this is 0, or lastindex(p). The firstindex method gives the smallest power of the indeterminate for the polynomial. The default method assumes the basis polynomials, βₖ, have degree k.

    source
    Base.lengthFunction
    length(::AbstractPolynomial)

    The length of the polynomial.

    source
    Base.sizeFunction
    size(::AbstractPolynomial, [i])

    Returns the size of the polynomials coefficients, along axis i if provided.

    source
    Polynomials.domainFunction
    Polynomials.domain(::Type{<:AbstractPolynomial})

    Returns the domain of the polynomial.

    source
    Polynomials.mapdomainFunction
    mapdomain(::Type{<:AbstractPolynomial}, x::AbstractArray)
    +mapdomain(::AbstractPolynomial, x::AbstractArray)

    Given values of x that are assumed to be unbounded (-∞, ∞), return values rescaled to the domain of the given polynomial.

    Examples

    julia> using Polynomials
    +
    +julia> x = -10:10
    +-10:10
    +
    +julia> extrema(mapdomain(ChebyshevT, x))
    +(-1.0, 1.0)
    +
    source
    Base.chopFunction
    chop(::AbstractPolynomial{T};
    +    rtol::Real = Base.rtoldefault(real(T)), atol::Real = 0))

    Removes any leading coefficients that are approximately 0 (using rtol and atol with norm(p)). Returns a polynomial whose degree will guaranteed to be equal to or less than the given polynomial's.

    source
    Polynomials.chop!Function
    chop!(::AbstractPolynomial{T};
    +    rtol::Real = Base.rtoldefault(real(T)), atol::Real = 0))

    In-place version of chop

    source
    Base.truncateFunction
    truncate(::AbstractPolynomial{T};
    +    rtol::Real = Base.rtoldefault(real(T)), atol::Real = 0)

    Rounds off coefficients close to zero, as determined by rtol and atol, and then chops any leading zeros. Returns a new polynomial.

    source
    Base.iszeroFunction
    iszero(p::AbstractPolynomial)

    Is this a $0$ polynomial.

    For most types, the $0$ polynomial is one with no coefficients (coefficient vector T[]), though some types have the possibility of trailing zeros. The degree of a zero polynomial is conventionally $-1$, though this is not the convention for Laurent polynomials.

    source
    Base.isrealFunction
    isreal(p::AbstractPolynomial)

    Determine whether a polynomial is a real polynomial, i.e., having only real numbers as coefficients.

    See also: real

    source
    Base.realFunction
    real(p::AbstractPolynomial)

    Construct a real polynomial from the real parts of the coefficients of p.

    See also: isreal

    Note

    This could cause losing terms in p. This method is usually called on polynomials like p = Polynomial([1, 2 + 0im, 3.0, 4.0 + 0.0im]) where you want to chop the imaginary parts of the coefficients of p.

    source
    Polynomials.isintegralFunction
    isintegral(p::AbstractPolynomial)

    Determine whether a polynomial is an integer polynomial, i.e., having only integers as coefficients.

    source
    Polynomials.ismonicFunction
    ismonic(p::AbstractPolynomial)

    Determine whether a polynomial is a monic polynomial, i.e., its leading coefficient is one.

    source

    Iteration

    For the Polynomial type, a natural mapping between the polynomial $a_0 + a_1 x + a_2 x^2 + \cdots + a_n x^n$ with the coefficients $(a_0, a_1, \dots, a_n))$ leads to the view point of a polynomial being a $0$-based vector. Similarly, when the basis terms are not the standard basis. The coeffs method returns these coefficients in an iterable (a vector or tuple). For Laurent type polynomials, the coefficients between firstindex(p) and lastindex(p) are returned.

    More generally, pairs(p) returns values i => aᵢ where the polynomial has terms $a_i T_i$ for the basis $T_i$. (For sparse polynomials these need not be in order and only terms where $a_i \ne 0$ are given.) The keys and values methods iterate over i and aᵢ.

    The firstindex method refers to the lowest stored basis index, which due to offsets need not be 0. It will be no smaller than Polynomials.minimumexponent, which is the smalled allowed index for the polynomial type. The lastindex method refers to the last basis index. If the type allows trailing zeros (like ImmutablePolynomial) this will differ from the value returned by degree.

    The getindex(p,i) method returns p_i or zero when out of bounds (if the element type of the polynomial has zero(T) defined). For mutable polynomials, the setindex!(p, val, i) method sets p[i] to val. This may extend the underlying storage container for some polynomial types. For ImmutablePolynomial the @set! macro from Setfield can be used with the typical setindex! notation.

    The map(fn, p) method maps fn over the coefficients and returns a polynomial with the same polynomial type as p.

    Polynomials.coeffsFunction
    coeffs(::AbstractPolynomial)
    +coeffs(::AbstractDenseUnivariatePolynomial)
    +coeffs(::AbstractLaurentUnivariatePolynomial)

    For a dense, univariate polynomial return the coefficients $(a_0, a_1, \dots, a_n)$ as an interable. This may be a vector or tuple, and may alias the polynomials coefficients.

    For a Laurent type polynomial (e.g. LaurentPolynomial, SparsePolynomial) return the coefficients $(a_i, a_{i+1}, \dots, a_j)$ where $i$ is found from firstindex(p) and $j$ from lastindex(p).

    For LaurentPolynomial and SparsePolynomial, the pairs iterator is more generically useful, as it iterates over $(i, p_i)$ possibly skipping the terms where $p_i = 0$.

    Defaults to p.coeffs.

    source
    Base.pairsFunction
    pairs(p::AbstractPolynomial)

    Iterator over $(i, p_i)$ for each basis element, $\beta_i$, represented by the coefficients.

    source
    Base.valuesFunction
    values(p::AbstractPolynomial)

    Iterator over $p_i$s for each basis element, $\beta_i$, represented by the coefficients.

    source
    Base.keysFunction
    keys(p::AbstractPolynomial)

    Iterator over $i$s for each basis element, $\beta_i$, represented by the coefficients.

    source
    Base.firstindexFunction
    firstindex(p::AbstractPolynomial)

    The index of the smallest basis element, $eta_i$, represented by the coefficients. This is $0$ for a zero polynomial.

    source
    Base.lastindexFunction
    lastindex(p::AbstractPolynomial)

    The index of the largest basis element, $eta_i$, represented by the coefficients. May be $-1$ or $0$ for the zero polynomial, depending on the storage type.

    source
    Base.eachindexFunction
    eachindex(p::AbstractPolynomial)

    Iterator over all indices of the represented basis elements

    source
    Base.mapFunction
    map(fn, p::AbstractPolynomial, args...)

    Transform coefficients of p by applying a function (or other callables) fn to each of them.

    You can implement real, etc., to a Polynomial by using map. The type of p may narrow using this function.

    source

    Mathematical Functions

    Base.zeroFunction
    zero(::Type{<:AbstractPolynomial})
    +zero(::AbstractPolynomial)

    Returns a representation of 0 as the given polynomial.

    source
    Base.oneFunction
    one(::Type{<:AbstractPolynomial})
    +one(::AbstractPolynomial)

    Returns a representation of 1 as the given polynomial.

    source
    Polynomials.variableFunction
    variable(var=:x)
    +variable(::Type{<:AbstractPolynomial}, var=:x)
    +variable(p::AbstractPolynomial, var=indeterminate(p))

    Return the monomial x in the indicated polynomial basis. If no type is give, will default to Polynomial. Equivalent to P(var).

    Examples

    julia> using Polynomials
    +
    +julia> x = variable()
    +Polynomial(x)
    +
    +julia> p = 100 + 24x - 3x^2
    +Polynomial(100 + 24*x - 3*x^2)
    +
    +julia> roots((x - 3) * (x + 2))
    +2-element Vector{Float64}:
    + -2.0
    +  3.0
    +
    source
    Polynomials.basisFunction
    basis(p::P, i::Int)
    +basis(::Type{<:AbstractPolynomial}, i::Int, var=:x)

    Return ith basis element for a given polynomial type, optionally with a specified variable.

    source
    Polynomials.fromrootsFunction
    fromroots(::AbstractVector{<:Number}; var=:x)
    +fromroots(::Type{<:AbstractPolynomial}, ::AbstractVector{<:Number}; var=:x)

    Construct a polynomial of the given type given the roots. If no type is given, defaults to Polynomial.

    Examples

    julia> using Polynomials
    +
    +julia> r = [3, 2]; # (x - 3)(x - 2)
    +
    +julia> fromroots(r)
    +Polynomial(6 - 5*x + x^2)
    source
    fromroots(::AbstractMatrix{<:Number}; var=:x)
    +fromroots(::Type{<:AbstractPolynomial}, ::AbstractMatrix{<:Number}; var=:x)

    Construct a polynomial of the given type using the eigenvalues of the given matrix as the roots. If no type is given, defaults to Polynomial.

    Examples

    julia> using Polynomials
    +
    +julia> A = [1 2; 3 4]; # (x - 5.37228)(x + 0.37228)
    +
    +julia> fromroots(A)
    +Polynomial(-1.9999999999999998 - 5.0*x + 1.0*x^2)
    source
    Base.gcdFunction
    gcd(a::AbstractPolynomial, b::AbstractPolynomial; atol::Real=0, rtol::Real=Base.rtoldefault)

    Find the greatest common denominator of two polynomials recursively using Euclid's algorithm.

    Examples

    julia> using Polynomials
    +
    +julia> gcd(fromroots([1, 1, 2]), fromroots([1, 2, 3]))
    +Polynomial(4.0 - 6.0*x + 2.0*x^2)
    +
    source
    gcd(p1::StandardBasisPolynomial, p2::StandardBasisPolynomial; method=:euclidean, kwargs...)

    Find the greatest common divisor.

    By default, uses the Euclidean division algorithm (method=:euclidean), which is susceptible to floating point issues.

    Passing method=:noda_sasaki uses scaling to circumvent some of these.

    Passing method=:numerical will call the internal method NGCD.ngcd for the numerical gcd. See the help page of Polynomials.NGCD.ngcd(p,q) for details.

    source
    Polynomials.derivativeFunction
    derivative(::AbstractPolynomial, order::Int = 1)

    Returns a polynomial that is the orderth derivative of the given polynomial. order must be non-negative.

    source
    Polynomials.integrateFunction
    integrate(p::AbstractPolynomial)

    Return an antiderivative for p

    source
    integrate(::AbstractPolynomial, C)

    Returns the indefinite integral of the polynomial with constant C when expressed in the standard basis.

    source
    integrate(::AbstractPolynomial, a, b)

    Compute the definite integral of the given polynomial from a to b. Will throw an error if either a or b are out of the polynomial's domain.

    source
    Polynomials.rootsFunction
    roots(::AbstractPolynomial; kwargs...)

    Returns the roots, or zeros, of the given polynomial.

    For non-factored, standard basis polynomials the roots are calculated via the eigenvalues of the companion matrix. The kwargs are passed to the LinearAlgebra.eigvals call.

    Note

    The default roots implementation is for polynomials in the standard basis. The companion matrix approach is reasonably fast and accurate for modest-size polynomials. However, other packages in the Julia ecosystem may be of interest and are mentioned in the documentation.

    source
    roots(pq::AbstractRationalFunction; kwargs...)

    Return the zeros of the rational function (after cancelling commong factors, the zeros are the roots of the numerator.

    source
    Polynomials.fitFunction
    fit(x, y, deg=length(x) - 1; [weights], var=:x)
    +fit(::Type{<:AbstractPolynomial}, x, y, deg=length(x)-1; [weights], var=:x)

    Fit the given data as a polynomial type with the given degree. Uses linear least squares to minimize the norm ||y - V⋅β||^2, where V is the Vandermonde matrix and β are the coefficients of the polynomial fit.

    This will automatically scale your data to the domain of the polynomial type using mapdomain. The default polynomial type is Polynomial.

    Weights

    Weights may be assigned to the points by specifying a vector or matrix of weights.

    When specified as a vector, [w₁,…,wₙ], the weights should be non-negative as the minimization problem is argmin_β Σᵢ wᵢ |yᵢ - Σⱼ Vᵢⱼ βⱼ|² = argmin_β || √(W)⋅(y - V(x)β)||², where, W the diagonal matrix formed from [w₁,…,wₙ], is used for the solution, V being the Vandermonde matrix of x corresponding to the specified degree. This parameterization of the weights is different from that of numpy.polyfit, where the weights would be specified through [ω₁,ω₂,…,ωₙ] = [√w₁, √w₂,…,√wₙ] with the answer solving argminᵦ | (ωᵢ⋅yᵢ- ΣⱼVᵢⱼ(ω⋅x) βⱼ) |^2.

    When specified as a matrix, W, the solution is through the normal equations (VᵀWV)β = (Vᵀy), again V being the Vandermonde matrix of x corresponding to the specified degree.

    (In statistics, the vector case corresponds to weighted least squares, where weights are typically given by wᵢ = 1/σᵢ², the σᵢ² being the variance of the measurement; the matrix specification follows that of the generalized least squares estimator with W = Σ⁻¹, the inverse of the variance-covariance matrix.)

    large degree

    For fitting with a large degree, the Vandermonde matrix is exponentially ill-conditioned. The ArnoldiFit type introduces an Arnoldi orthogonalization that fixes this problem.

    source
    fit(P::Type{<:StandardBasisPolynomial}, x, y, J, [cs::Dict{Int, T}]; weights, var)

    Using constrained least squares, fit a polynomial of the type p = ∑_{i ∈ J} aᵢ xⁱ + ∑ cⱼxʲ where cⱼ are fixed non-zero constants

    • J: a collection of degrees to find coefficients for
    • cs: If given, a Dict of key/values, i => cᵢ, which indicate the degree and value of the fixed non-zero constants.

    The degrees in cs and those in J should not intersect.

    Example

    x = range(0, pi/2, 10)
    +y = sin.(x)
    +P = Polynomial
    +p0 = fit(P, x, y, 5)
    +p1 = fit(P, x, y, 1:2:5)
    +p2 = fit(P, x, y, 3:2:5, Dict(1 => 1))
    +[norm(p.(x) - y) for p ∈ (p0, p1, p2)] # 1.7e-5, 0.00016, 0.000248
    source
    fit(::Type{RationalFunction}, xs::AbstractVector{S}, ys::AbstractVector{T}, m, n; var=:x)

    Fit a rational function of the form pq = (a₀ + a₁x¹ + … + aₘxᵐ) / (1 + b₁x¹ + … + bₙxⁿ) to the data (x,y).

    Note

    This uses a simple implementation of the Gauss-Newton method to solve the non-linear least squares problem: minᵦ Σ(yᵢ - pq(xᵢ,β)², where β=(a₀,a₁,…,aₘ,b₁,…,bₙ).

    A more rapidly convergent method is used in the LsqFit.jl package, and if performance is important, re-expressing the problem for use with that package is suggested.

    Further, if an accurate rational function fit of adaptive degrees is of interest, the BaryRational.jl package provides an implementation of the AAA algorithm ("which offers speed, flexibility, and robustness we have not seen in other algorithms" Nakatsukasa, Sète, Trefethen) and one using Floater-Hormann weights Floater, Hormann ("that have no real poles and arbitrarily high approximation orders on any real interval, regardless of the distribution of the points")

    The RationalApproximations package also has implementations of the AAA algorithm.

    A python library, polyrat, has implementations of other algorithms.

    Example

    julia> x = variable(Polynomial{Float64})
    +Polynomial(1.0*x)
    +
    +julia> pq = (1+x)//(1-x)
    +(1.0 + 1.0*x) // (1.0 - 1.0*x)
    +
    +julia> xs = 2.0:.1:3;
    +
    +julia> ys = pq.(xs);
    +
    +julia> v = fit(RationalFunction, xs, ys, 2, 2)
    +(1.0 + 1.0*x - 6.82121e-13*x^2) // (1.0 - 1.0*x + 2.84217e-13*x^2)
    +
    +julia> maximum(abs, v(x)-pq(x) for x ∈ 2.1:0.1:3.0)
    +1.06314956838105e-12
    +
    +julia> using BaryRational
    +
    +julia> u = aaa(xs,ys)
    +(::BaryRational.AAAapprox{Vector{Float64}}) (generic function with 1 method)
    +
    +julia> maximum(abs, u(x)-pq(x) for x ∈ 2.1:0.1:3.0)
    +4.440892098500626e-16
    +
    +julia> u(variable(pq)) # to see which polynomial is used
    +(2.68328 + 0.447214*x - 1.78885*x^2 + 0.447214*x^3) // (2.68328 - 4.91935*x + 2.68328*x^2 - 0.447214*x^3)
    source
    fit(::Type{RationalFunction}, r::Polynomial, m, n; var=:x)

    Fit a Pade approximant (pade_fit) to r.

    Examples:

    julia> using Polynomials, PolynomialRatios
    +
    +julia> x = variable()
    +Polynomial(x)
    +
    +julia> ex = 1 + x + x^2/2 + x^3/6 + x^4/24 + x^5/120 # Taylor polynomial for e^x
    +Polynomial(1.0 + 1.0*x + 0.5*x^2 + 0.16666666666666666*x^3 + 0.041666666666666664*x^4 + 0.008333333333333333*x^5)
    +
    +julia> maximum(abs, exp(x) - fit(RationalFunction, ex, 1,1)(x) for x ∈ 0:.05:0.5)
    +0.017945395966538547
    +
    +julia> maximum(abs, exp(x) - fit(RationalFunction, ex, 1,2)(x) for x ∈ 0:.05:0.5)
    +0.0016624471707165078
    +
    +julia> maximum(abs, exp(x) - fit(RationalFunction, ex, 2,1)(x) for x ∈ 0:.05:0.5)
    +0.001278729299871717
    +
    +julia> maximum(abs, exp(x) - fit(RationalFunction, ex, 2,2)(x) for x ∈ 0:.05:0.5)
    +7.262205147950951e-5
    source
    Polynomials.vanderFunction
    vander(::Type{AbstractPolynomial}, x::AbstractVector, deg::Integer)

    Calculate the pseudo-Vandermonde matrix of the given polynomial type with the given degree.

    References

    Vandermonde Matrix

    source

    Plotting

    Polynomials can be plotted directly using Plots.jl or Makie.jl.

    plot(::AbstractPolynomial; kwds...)

    will automatically determine a range based on the critical points (roots, extrema and points of inflection).

    plot(::AbstractPolynomial, a, b; kwds...)

    will plot the polynomial within the range [a, b].

    using Plots, Polynomials
    +# T1, T2, T3, and T4:
    +chebs = [
    +  ChebyshevT([0, 1]),
    +  ChebyshevT([0, 0, 1]),
    +  ChebyshevT([0, 0, 0, 1]),
    +  ChebyshevT([0, 0, 0, 0, 1]),
    +]
    +colors = ["#4063D8", "#389826", "#CB3C33", "#9558B2"]
    +
    +p = plot(legend=false, label="")
    +for (cheb, col) in zip(chebs, colors)
    +  plot!(cheb, c=col, lw=5)
    +end

    diff --git a/v4.0.0/search/index.html b/v4.0.0/search/index.html new file mode 100644 index 00000000..96c19b67 --- /dev/null +++ b/v4.0.0/search/index.html @@ -0,0 +1,2 @@ + +Search · Polynomials.jl

    Loading search...

      diff --git a/v4.0.0/search_index.js b/v4.0.0/search_index.js new file mode 100644 index 00000000..51ea6c33 --- /dev/null +++ b/v4.0.0/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"extending/#Extending-Polynomials","page":"Extending","title":"Extending Polynomials","text":"","category":"section"},{"location":"extending/","page":"Extending","title":"Extending","text":"The AbstractUnivaeriatePolynomial type was made to be extended.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"A polynomial's coefficients are relative to some basis. The Polynomial type relates coefficients [a0, a1, ..., an], say, to the polynomial a_0 + a_1cdot x + a_2cdot x^2 + cdots + a_ncdot x^n, through the standard basis 1 x x^2 x^n. New polynomial types typically represent the polynomial through a different basis. For example, CheyshevT uses a basis T_0=1 T_1=x T_2=2x^2-1 cdots T_n = 2xT_n-1 - T_n-2. For this type the coefficients [a0,a1,...,an] are associated with the polynomial `a0\\cdot T_0 + a_1 \\cdot T_1 + \\cdots + a_n\\cdot T_n.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"A polynomial type consists of a container type (with parent type AbstractUnivariatePolynomial) and a basis type (with parent type AbstractBasis). There a several different storage types implemented.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"To implement a new polynomial type, P, the following methods should be implemented:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Function Required Notes\nA container type x Usually selected from an available one.\nA basis type x \nvariable Convenience to find the monomial x in the new basis.\nBase.evalpoly(x, p::P) x To evaluate the polynomial at x\n*(::P, ::P) Multiplication of polynomials\nconvert(::P, p::Polynomial) Defaults to polynomial evaluation. Can be used to define * by round trip through Polynomial type \nconvert(::Polynomial, p) Defaults to polynomial evaluation, which uses evalpoly, variable, *\nscalar_add(c::S, ::P) Scalar addition. Default requires one to be defined.\none x Convenience to find the constant 1 in the new basis.\nmap(f, p) x Used to define scalar multiplication\ndivrem Required for gcd\nvander Required for fit\ncompanion Required for roots\nPolynomials.domain Should return a Polynomials.Interval instance","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"As always, if the default implementation does not work or there are more efficient ways of implementing, feel free to overwrite functions from common.jl for your type.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"The general idea is the container type should provide the vector operations of polynomial addition, subtraction, and scalar multiplication. The latter is generically implemented through a map(f,p) method. The second example illustrates, though it isn't expected that container types will need being defined by users of this package.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"The basis type directs dispatch for other operations and allows definitions for one and variable. An evalpoly method may be defined for a given basis type, though specializations based on the container may be desirable.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Methods like * will typically need to consider both the underlying container type and the basis, though if convert methods are defined, the defaults can be utilized as converting to the Polynomial type, performing the operation, then converting back is possible, though likely not as efficient.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"note: Note\nMost promotion rules will coerce towards the Polynomial type, so not all methods have to be implemented if you provide a conversion function.","category":"page"},{"location":"extending/#A-new-basis-type","page":"Extending","title":"A new basis type","text":"","category":"section"},{"location":"extending/","page":"Extending","title":"Extending","text":"The generalized Laguerre polynomials are orthogonal polynomials parameterized by alpha and defined recursively by","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"beginalign*\nL^alpha_1(x) = 1\nL^alpha_2(x) = 1 + alpha - x\nL^alpha_n+1(x) = frac2n+1+alpha -xn+1 L^alpha_n(x) - fracn+alphan+1 L^alpha_n-1(x)\n= (A_nx +B_n) cdot L^alpha_n(x) - C_n cdot L^alpha_n-1(x)\nendalign*","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"There are other characterizations available. The three-point recursion, described by A,B, and C is used below for evaluation.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"We show how to define a new basis type, LaguerreBasis, leveraging one of the existing container types. In this example our basis type has a parameter. The ChebyshevT type, gives a related example of how this task can be implemented.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"First we load the package and import a few non-exported functions:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> using Polynomials;\n\njulia> import Polynomials: AbstractUnivariatePolynomial, AbstractBasis, MutableDensePolynomial;","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"We define the basis with:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> struct LaguerreBasis{alpha} <: AbstractBasis end\n\njulia> Polynomials.basis_symbol(::Type{<:AbstractUnivariatePolynomial{LaguerreBasis{α},T,X}}) where {α,T,X} =\n \"L^$(α)\"","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"We added a method to basis_symbol to show this basis. The display of the basis symbol has a poor default. The method above requires the full type, as the indeterminate, X, may be part of the desired output. More generally, Polynomials.printbasis can have methods added to adjust for different display types.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Polynomial types can be initiated through specifying a storage type and a basis type, say:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> P = MutableDensePolynomial{LaguerreBasis{0}}\nMutableDensePolynomial{LaguerreBasis{0}}","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Instances can now be created:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> p = P([1,2,3])\nMutableDensePolynomial(1L^0_0 + 2*L^0_1 + 3*L^0_2)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Or using other storage types:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> Polynomials.ImmutableDensePolynomial{LaguerreBasis{1}}((1,2,3))\nPolynomials.ImmutableDensePolynomial(1L^1_0 + 2*L^1_1 + 3*L^1_2)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"All polynomial types have vector addition and scalar multiplication defined, as these are basis independent:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> q = P([1,2])\nMutableDensePolynomial(1L^0_0 + 2*L^0_1)\n\njulia> p + q\nMutableDensePolynomial(2L^0_0 + 4*L^0_1 + 3*L^0_2)\n\njulia> 2p\nMutableDensePolynomial(2L^0_0 + 4*L^0_1 + 6*L^0_2)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"For a new basis, there are no default methods for polynomial evaluation and polynomial multiplication; and no defaults for one (used by default for scalar addition), and variable (used by default in conversion).","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"For the Laguerre Polynomials, Clenshaw recursion can be used for evaluation.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> function ABC(::Type{LaguerreBasis{α}}, n) where {α}\n o = one(α)\n d = n + o\n (A=-o/d, B=(2n + o + α)/d, C=(n+α)/d)\n end\nABC (generic function with 1 method)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> function clenshaw_eval(p::P, x::S) where {α, Bᵅ<: LaguerreBasis{α}, T, P<:AbstractUnivariatePolynomial{Bᵅ,T}, S}\n d = degree(p)\n R = typeof(((one(α) * one(T)) * one(S)) / 1)\n p₀ = one(R)\n d == -1 && return zero(R)\n d == 0 && return p[0] * one(R)\n Δ0 = p[d-1]\n Δ1 = p[d]\n @inbounds for i in (d - 1):-1:1\n A,B,C = ABC(Bᵅ, i)\n Δ0, Δ1 =\n p[i] - Δ1 * C, Δ0 + Δ1 * muladd(x, A, B)\n end\n A,B,C = ABC(Bᵅ, 0)\n p₁ = muladd(x, A, B) * p₀\n return Δ0 * p₀ + Δ1 * p₁\n end\nclenshaw_eval (generic function with 1 method)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Internally, evalpoly is called so we forward that method.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> Polynomials.evalpoly(x, p::P) where {P<:AbstractUnivariatePolynomial{<:LaguerreBasis}} =\n clenshaw_eval(p, x)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"We test this out by passing in the variable x in the standard basis:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> p = P([0,0,1])\nMutableDensePolynomial(L^0_2)\n\njulia> x = variable(Polynomial)\nPolynomial(1.0*x)\n\njulia> p(x)\nPolynomial(1.0 - 2.0*x + 0.5*x^2)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"This shows evaluation works and also that conversion to the Polynomial type is available through polynomial evaluation. This is used by default by convert, so we immediately have other convert methods available:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> convert(ChebyshevT, p)\nChebyshevT(1.25⋅T_0(x) - 2.0⋅T_1(x) + 0.25⋅T_2(x))","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Or, using some extra annotations to have rational arithmetic used, we can compare to easily found representations in the standard basis:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> q = Polynomials.basis(MutableDensePolynomial{LaguerreBasis{0//1}, Int}, 5)\nMutableDensePolynomial(L^0//1_5)\n\njulia> x = variable(Polynomial{Int})\nPolynomial(x)\n\njulia> q(x)\nPolynomial(1//1 - 5//1*x + 5//1*x^2 - 5//3*x^3 + 5//24*x^4 - 1//120*x^5)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"The values of one and variable are straightforward to define, as L_0=1 and L_1=1 - x or x = L_0 - L_1","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> Polynomials.one(::Type{P}) where {B<:LaguerreBasis,T,X,P<:AbstractUnivariatePolynomial{B,T,X}} =\n P([one(T)])\n\njulia> Polynomials.variable(::Type{P}) where {B<:LaguerreBasis,T,X,P<:AbstractUnivariatePolynomial{B,T,X}} =\n P([one(T), -one(T)])","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"To see this is correct, we have:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> variable(P)(x) == x\ntrue","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Scalar addition defaults to a call to one(p), so this is now defined:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> 2 + p\nMutableDensePolynomial(2L^0_0 + L^0_2)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Often it is more performant to implement a specific method for scalar_add. Here we utilize the fact that L_0 = 1 to manipulate the coefficients. Below we specialize to a container type:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> function Polynomials.scalar_add(c::S, p::P) where {B<:LaguerreBasis,T,X,\n P<:MutableDensePolynomial{B,T,X},S}\n R = promote_type(T,S)\n iszero(p) && return MutableDensePolynomial{B,R,X}(c)\n cs = convert(Vector{R}, copy(p.coeffs))\n cs[1] += c\n MutableDensePolynomial{B,R,X}(cs)\n end\n\njulia> p + 3\nMutableDensePolynomial(3L^0_0 + L^0_2)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Multiplication defaults to a code path where the two polynomials are promoted to a common type and then multiplied. Here we implement polynomial multiplication through conversion to the polynomial type. The direct formula could be implemented, but that isn't so illustrative for this example. See the SpecialPolynomials package for an implementation.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> function Base.:*(p::MutableDensePolynomial{B,T,X},\n q::MutableDensePolynomial{B,S,X}) where {B<:LaguerreBasis, T,S,X}\n x = variable(Polynomial{T,X})\n p(x) * q(x)\n end","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Were it defined, a convert method from Polynomial to the LaguerreBasis could be used to implement multiplication, as we have defined a variable method.","category":"page"},{"location":"extending/#A-new-container-type","page":"Extending","title":"A new container type","text":"","category":"section"},{"location":"extending/","page":"Extending","title":"Extending","text":"This example shows how to make a new container type, though this should be unnecessary, given the current variety, there may be gains to be had (e.g. an immutable, sparse type?) In this case, we offer a minimal example where the polynomial type aliases the vector defining the coefficients is created. For other bases, more methods may be necessary to define (again, refer to ChebyshevT for an example).","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"We have two constructor methods. The first is the typical code path. It makes a copy of the coefficients and then wraps those within the polynomial container type. For performance reasons, generically it is helpful to pass in a flag to indicate no copying or checking of the input is needed (Val{false}). This is used by some inherited methods when we specialize to the StandardBasis type. Generically, a container type may accept an offset, though this type won't; a 0-based vector is implicit.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> using Polynomials\n\njulia> struct AliasPolynomialType{B,T,X} <: Polynomials.AbstractDenseUnivariatePolynomial{B, T, X}\n coeffs::Vector{T}\n function AliasPolynomialType{B, T, X}(coeffs::AbstractVector{S}, o::Int=0) where {B, T, S, X}\n new{B,T,Symbol(X)}(convert(Vector{T}, copy(coeffs)))\n end\n function AliasPolynomialType{B, T, X}(::Val{false}, coeffs::AbstractVector{S}, o::Int=0) where {B, T, S, X}\n new{B,T,Symbol(X)}(convert(Vector{T}, coeffs))\n end\n end\n\njulia> Polynomials.@poly_register AliasPolynomialType","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"The call to @poly_register adds many different means to construct polynomials of this type along with some other default methods.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"A few methods need defining to get indexing to work:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> Base.firstindex(p::AliasPolynomialType) = 0\n\njulia> Base.lastindex(p::AliasPolynomialType) = length(p.coeffs) - 1\n","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> Polynomials.constructorof(::Type{<:AliasPolynomialType{B}}) where {B} = AliasPolynomialType{B}\n","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"We need to add in the vector-space operations:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> function Base.:+(p::AliasPolynomialType{B,T,X}, q::AliasPolynomialType{B,S,X}) where {B,S,T,X}\n R = promote_type(T,S)\n n = maximum(degree, (p,q))\n cs = [p[i] + q[i] for i in 0:n]\n AliasPolynomialType{B,R,X}(Val(false), cs) # save a copy\n end\n\njulia> function Base.:-(p::AliasPolynomialType{B,T,X}, q::AliasPolynomialType{B,S,X}) where {B,S,T,X}\n R = promote_type(T,S)\n n = maximum(degree, (p,q))\n cs = [p[i] - q[i] for i in 0:n]\n AliasPolynomialType{B,R,X}(Val(false), cs)\n end\n\njulia> function Base.map(fn, p::P) where {B,T,X,P<:AliasPolynomialType{B,T,X}}\n cs = map(fn, p.coeffs)\n R = eltype(cs)\n AliasPolynomialType{B,R,X}(Val(false), cs)\n end\n","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"A type and a basis defines a polynomial type. This example uses the StandardBasis basis type and consequently inherits the methods mentioned above that otherwise would need implementing.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> AliasPolynomial = AliasPolynomialType{Polynomials.StandardBasis};\n","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"To see this new polynomial type in action, we have:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> xs = [1,2,3,4];\n\njulia> p = AliasPolynomial(xs)\nAliasPolynomialType(1 + 2*x + 3*x^2 + 4*x^3)\n\njulia> q = AliasPolynomial(1.0, :y)\nAliasPolynomialType(1.0)\n\njulia> 2p - q\nAliasPolynomialType(3.0 + 4.0*x + 6.0*x^2 + 8.0*x^3)\n\njulia> (derivative ∘ integrate)(p) == p\ntrue\n\njulia> p(3)\n142","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"The default for polynomial multiplication is to call * for two instances of the type with the same variable, and possibly different element types. For standard basis types, we can add this method:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> Base.:*(p::AliasPolynomialType{T,X}, q::AliasPolynomialType{S,X}) where {T,S,X} = Polynomials._standard_basis_multiplication(p,q)\n\njulia> p * p\nAliasPolynomialType(1 + 4*x + 10*x^2 + 20*x^3 + 25*x^4 + 24*x^5 + 16*x^6)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"For the Polynomial type, the default on operations is to copy the array. For this type, it might seem reasonable – to avoid allocations – to update the coefficients in place for scalar addition and scalar multiplication.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Scalar addition, p+c, defaults to p + c*one(p), or polynomial addition, which is not inplace without additional work. As such, we create a new method and an infix operator","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> function scalar_add!(c::T, p::AliasPolynomial{T}) where {T}\n p.coeffs[1] += c\n p\n end;\n\njulia> p::AliasPolynomial +ₛ c::Number = scalar_add!(c, p);\n\njulia> c::Number +ₛ p::AliasPolynomial = scalar_add!(c, p);","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"The viewpoint that a polynomial represents a vector of coefficients leads to an expectation that vector operations should match when possible. Scalar multiplication is a vector operation, so it seems reasonable to override the broadcast machinery to implement an in place operation (e.g. p .*= 2). By default, the polynomial types are not broadcastable over their coefficients. We would need to make a change there and modify the copyto! function:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> Base.broadcastable(p::AliasPolynomial) = p.coeffs;\n\njulia> Base.ndims(::Type{<:AliasPolynomial}) = 1\n\njulia> Base.copyto!(p::AliasPolynomial, x) = (copyto!(p.coeffs, x); chop!(p));\n\njulia> p\nAliasPolynomialType(1 + 2*x + 3*x^2 + 4*x^3)\n\njulia> p .*= 2\nAliasPolynomialType(2 + 4*x + 6*x^2 + 8*x^3)\n\njulia> p ./= 2\nAliasPolynomialType(1 + 2*x + 3*x^2 + 4*x^3)","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Trying to divide again would throw an error, as the result would not fit with the integer type of p.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Now p is treated as the vector p.coeffs, as regards broadcasting, so some things may be surprising, for example this expression returns a vector, not a polynomial:","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"julia> p .+ 2\n4-element Vector{Int64}:\n 3\n 4\n 5\n 6","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"The unexported Polynomials.PnPolynomial polynomial type implements much of the above.","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"","category":"page"},{"location":"extending/","page":"Extending","title":"Extending","text":"Polynomials.AbstractUnivariatePolynomial\nPolynomials.AbstractBasis","category":"page"},{"location":"extending/#Polynomials.AbstractUnivariatePolynomial","page":"Extending","title":"Polynomials.AbstractUnivariatePolynomial","text":"AbstractUnivariatePolynomial{B,T,X} <: AbstractPolynomial{T,X}\nAbstractDenseUnivariatePolynomial{B,T,X} <: AbstractUnivariatePolynomial{B,T,X}\nAbstractLaurentUnivariatePolynomial{B,T,X} <: AbstractUnivariatePolynomial{B,T,X}\n\nAbstract container types for polynomials with an explicit basis, B. AbstractDenseUnivariatePolynomial is for 0-based polynomials; AbstractLaurentUnivariatePolynomial is for polynomials with possibly negative powers of the indeterminate.\n\n\n\n\n\n","category":"type"},{"location":"extending/#Polynomials.AbstractBasis","page":"Extending","title":"Polynomials.AbstractBasis","text":"AbstractBasis\n\nAbstract type for specifying a polynomial basis.\n\n\n\n\n\n","category":"type"},{"location":"polynomials/polynomial/#Polynomial","page":"Polynomial","title":"Polynomial","text":"","category":"section"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"Polynomial types using the standard basis.","category":"page"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"DocTestSetup = quote\n using Polynomials\nend","category":"page"},{"location":"polynomials/polynomial/#Polynomial-2","page":"Polynomial","title":"Polynomial","text":"","category":"section"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"Polynomial","category":"page"},{"location":"polynomials/polynomial/#Polynomials.Polynomial","page":"Polynomial","title":"Polynomials.Polynomial","text":"Polynomial{T, X}(coeffs::AbstractVector{T}, [var = :x])\n\nConstruct a polynomial from its coefficients coeffs, lowest order first, optionally in terms of the given variable var which may be a character, symbol, or a string.\n\nIf p = a_n x^n + ldots + a_2 x^2 + a_1 x + a_0, we construct this through Polynomial([a_0, a_1, ..., a_n]).\n\nThe usual arithmetic operators are overloaded to work with polynomials as well as with combinations of polynomials and scalars. However, operations involving two polynomials of different variables causes an error except those involving a constant polynomial.\n\nnote: Note\nPolynomial is not axis-aware, and it treats coeffs simply as a list of coefficients with the first index always corresponding to the constant term. In order to use the axis of coeffs as exponents, consider using a LaurentPolynomial or possibly a SparsePolynomial.\n\nExamples\n\njulia> using Polynomials\n\njulia> Polynomial([1, 0, 3, 4])\nPolynomial(1 + 3*x^2 + 4*x^3)\n\njulia> Polynomial([1, 2, 3], :s)\nPolynomial(1 + 2*s + 3*s^2)\n\njulia> one(Polynomial)\nPolynomial(1.0)\n\n\n\n\n\n","category":"type"},{"location":"polynomials/polynomial/#Immutable-Polynomial","page":"Polynomial","title":"Immutable Polynomial","text":"","category":"section"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"ImmutablePolynomial","category":"page"},{"location":"polynomials/polynomial/#Polynomials.ImmutablePolynomial","page":"Polynomial","title":"Polynomials.ImmutablePolynomial","text":"ImmutablePolynomial{T, X, N}(coeffs)\n\nConstruct an immutable (static) polynomial from its coefficients a₀, a₁, …, aₙ, lowest order first, optionally in terms of the given variable x where x can be a character, symbol, or string.\n\nIf p = a_n x^n + ldots + a_2 x^2 + a_1 x + a_0, we construct this through ImmutablePolynomial((a_0, a_1, ..., a_n)) (assuming a_n ≠ 0). As well, a vector or number can be used for construction.\n\nThe usual arithmetic operators are overloaded to work with polynomials as well as with combinations of polynomials and scalars. However, operations involving two non-constant polynomials of different variables causes an error. Unlike other polynomials, setindex! is not defined for ImmutablePolynomials.\n\nAs the degree of the polynomial (+1) is a compile-time constant, several performance improvements are possible. For example, immutable polynomials can take advantage of faster polynomial evaluation provided by evalpoly from Julia 1.4; similar methods are also used for addition and multiplication.\n\nHowever, as the degree is included in the type, promotion between immutable polynomials can not promote to a common type. As such, they are precluded from use in rational functions.\n\nnote: Note\nImmutablePolynomial is not axis-aware, and it treats coeffs simply as a list of coefficients with the first index always corresponding to the constant term.\n\nExamples\n\njulia> using Polynomials\n\njulia> ImmutablePolynomial((1, 0, 3, 4))\nImmutablePolynomial(1 + 3*x^2 + 4*x^3)\n\njulia> ImmutablePolynomial((1, 2, 3), :s)\nImmutablePolynomial(1 + 2*s + 3*s^2)\n\njulia> one(ImmutablePolynomial)\nImmutablePolynomial(1.0)\n\nnote: Note\nThis was modeled after StaticUnivariatePolynomials by @tkoolen.\n\n\n\n\n\n","category":"type"},{"location":"polynomials/polynomial/#Sparse-Polynomial","page":"Polynomial","title":"Sparse Polynomial","text":"","category":"section"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"SparsePolynomial","category":"page"},{"location":"polynomials/polynomial/#Polynomials.SparsePolynomial","page":"Polynomial","title":"Polynomials.SparsePolynomial","text":"SparsePolynomial{T, X}(coeffs::Dict{Int,T})\n\nPolynomials in the standard basis backed by a dictionary holding the non-zero coefficients. For polynomials of high degree, this might be advantageous.\n\nExamples:\n\njulia> using Polynomials\n\njulia> P = SparsePolynomial;\n\njulia> p, q = P([1,2,3]), P([4,3,2,1])\n(SparsePolynomial(1 + 2*x + 3*x^2), SparsePolynomial(4 + 3*x + 2*x^2 + x^3))\n\njulia> p + q\nSparsePolynomial(5 + 5*x + 5*x^2 + x^3)\n\njulia> p * q\nSparsePolynomial(4 + 11*x + 20*x^2 + 14*x^3 + 8*x^4 + 3*x^5)\n\njulia> p + 1\nSparsePolynomial(2 + 2*x + 3*x^2)\n\njulia> q * 2\nSparsePolynomial(8 + 6*x + 4*x^2 + 2*x^3)\n\njulia> p = Polynomials.basis(P, 10^9) - Polynomials.basis(P,0) # also P(Dict(0=>-1, 10^9=>1))\nSparsePolynomial(-1.0 + 1.0*x^1000000000)\n\njulia> p(1)\n0.0\n\nnote: Note\nSparsePolynomial is an alias for MutableSparsePolynomial{StandardBasis}.\n\n\n\n\n\n","category":"type"},{"location":"polynomials/polynomial/#Laurent-Polynomial","page":"Polynomial","title":"Laurent Polynomial","text":"","category":"section"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"LaurentPolynomial","category":"page"},{"location":"polynomials/polynomial/#Polynomials.LaurentPolynomial","page":"Polynomial","title":"Polynomials.LaurentPolynomial","text":"LaurentPolynomial{T,X}(coeffs::AbstractVector, [m::Integer = 0], [var = :x])\n\nA Laurent polynomial is of the form a_{m}x^m + ... + a_{n}x^n where m,n are integers (not necessarily positive) with m <= n.\n\nThe coeffs specify a_{m}, a_{m-1}, ..., a_{n}. The argument m represents the lowest exponent of the variable in the series, and is taken to be zero by default.\n\nLaurent polynomials and standard basis polynomials promote to Laurent polynomials. Laurent polynomials may be converted to a standard basis polynomial when m >= 0,\n\nIntegration will fail if there is a x⁻¹ term in the polynomial.\n\nnote: Note\nLaurentPolynomial is axis-aware, unlike the other polynomial types in this package.\n\nExamples:\n\njulia> using Polynomials\n\njulia> P = LaurentPolynomial;\n\njulia> p = P([1,1,1], -1)\nLaurentPolynomial(x⁻¹ + 1 + x)\n\njulia> q = P([1,1,1])\nLaurentPolynomial(1 + x + x²)\n\njulia> pp = Polynomial([1,1,1])\nPolynomial(1 + x + x^2)\n\njulia> p + q\nLaurentPolynomial(x⁻¹ + 2 + 2*x + x²)\n\njulia> p * q\nLaurentPolynomial(x⁻¹ + 2 + 3*x + 2*x² + x³)\n\njulia> p * pp\nLaurentPolynomial(x⁻¹ + 2 + 3*x + 2*x² + x³)\n\njulia> pp - q\nLaurentPolynomial(0)\n\njulia> derivative(p)\nLaurentPolynomial(-x⁻² + 1)\n\njulia> integrate(q)\nLaurentPolynomial(1.0*x + 0.5*x² + 0.3333333333333333*x³)\n\njulia> integrate(p) # x⁻¹ term is an issue\nERROR: ArgumentError: Can't integrate Laurent polynomial with `x⁻¹` term\n\njulia> integrate(P([1,1,1], -5))\nLaurentPolynomial(-0.25*x⁻⁴ - 0.3333333333333333*x⁻³ - 0.5*x⁻²)\n\njulia> x⁻¹ = inv(variable(LaurentPolynomial)) # `inv` defined on monomials\nLaurentPolynomial(1.0*x⁻¹)\n\njulia> p = Polynomial([1,2,3])\nPolynomial(1 + 2*x + 3*x^2)\n\njulia> x = variable()\nPolynomial(x)\n\njulia> x^degree(p) * p(x⁻¹) # reverses coefficients\nLaurentPolynomial(3.0 + 2.0*x + 1.0*x²)\n\n\n\n\n\n","category":"type"},{"location":"polynomials/polynomial/#Factored-Polynomial","page":"Polynomial","title":"Factored Polynomial","text":"","category":"section"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"FactoredPolynomial","category":"page"},{"location":"polynomials/polynomial/#Polynomials.FactoredPolynomial","page":"Polynomial","title":"Polynomials.FactoredPolynomial","text":"FactoredPolynomial{T,X}\n\nA polynomial type that stores its data in a dictionary whose keys are the roots and whose values are the respective multiplicities along with a leading coefficient.\n\nThe structure is utilized for scalar multiplication, polynomial multiplication and powers, the finding of roots, and the identification of a greatest common divisor. For other operations, say addition, the operation is done after converting to the Polynomial type then converting back. (This requires the identification of the roots, so is subject to numeric issues.)\n\nExamples\n\njulia> using Polynomials\n\njulia> p = FactoredPolynomial(Dict([0=>1, 1=>2, 3=>4]))\nFactoredPolynomial(x * (x - 3)⁴ * (x - 1)²)\n\njulia> q = fromroots(FactoredPolynomial, [0,1,2,3])\nFactoredPolynomial(x * (x - 2) * (x - 3) * (x - 1))\n\njulia> p*q\nFactoredPolynomial(x² * (x - 2) * (x - 3)⁵ * (x - 1)³)\n\njulia> p^1000\nFactoredPolynomial(x¹⁰⁰⁰ * (x - 3)⁴⁰⁰⁰ * (x - 1)²⁰⁰⁰)\n\njulia> gcd(p,q)\nFactoredPolynomial(x * (x - 3) * (x - 1))\n\njulia> p = Polynomial([24, -50, 35, -10, 1])\nPolynomial(24 - 50*x + 35*x^2 - 10*x^3 + x^4)\n\njulia> q = convert(FactoredPolynomial, p) # noisy form of `factor`:\nFactoredPolynomial((x - 4.0000000000000036) * (x - 2.9999999999999942) * (x - 1.0000000000000002) * (x - 2.0000000000000018))\n\njulia> map(x->round(x, digits=12), q) # map works over factors and leading coefficient -- not coefficients in the standard basis\nFactoredPolynomial((x - 4.0) * (x - 2.0) * (x - 3.0) * (x - 1.0))\n\n\n\n\n\n","category":"type"},{"location":"polynomials/polynomial/#Rational-Function","page":"Polynomial","title":"Rational Function","text":"","category":"section"},{"location":"polynomials/polynomial/","page":"Polynomial","title":"Polynomial","text":"RationalFunction","category":"page"},{"location":"polynomials/polynomial/#Polynomials.RationalFunction","page":"Polynomial","title":"Polynomials.RationalFunction","text":"RationalFunction(p::AbstractPolynomial, q::AbstractPolynomial)\np // q\n\nCreate a rational expression (p//q) from the two polynomials.\n\nCommon factors are not cancelled by the constructor, as they are for the base Rational type. The lowest_terms(pq) function attempts that operation.\n\nFor purposes of iteration, a rational function is treated like a two-element container.\n\nExamples\n\njulia> using Polynomials\n\njulia> p,q = fromroots(Polynomial, [1,2,3]), fromroots(Polynomial, [2,3,4])\n(Polynomial(-6 + 11*x - 6*x^2 + x^3), Polynomial(-24 + 26*x - 9*x^2 + x^3))\n\njulia> pq = p // q\n(-6 + 11*x - 6*x^2 + x^3) // (-24 + 26*x - 9*x^2 + x^3)\n\njulia> lowest_terms(pq)\n(-0.333333 + 0.333333*x) // (-1.33333 + 0.333333*x)\n\njulia> pq(2.5)\n-1.0\n\njulia> pq(2) # uses first non-`0/0` ratio of `p⁽ᵏ⁾/q⁽ᵏ⁾`\n-0.5\n\njulia> pq^2\n(36 - 132*x + 193*x^2 - 144*x^3 + 58*x^4 - 12*x^5 + x^6) // (576 - 1248*x + 1108*x^2 - 516*x^3 + 133*x^4 - 18*x^5 + x^6)\n\njulia> derivative(pq)\n(-108 + 180*x - 111*x^2 + 30*x^3 - 3*x^4) // (576 - 1248*x + 1108*x^2 - 516*x^3 + 133*x^4 - 18*x^5 + x^6)\n\nnote: Note\nThe RationalFunctions.jl package was a helpful source of ideas.\n\nnote: Note\nThe ImmutablePolynomial type can not be used for rational functions, as the type requires the numerator and denominator to have the exact same type.\n\n\n\n\n\n","category":"type"},{"location":"reference/#Reference/API","page":"Reference/API","title":"Reference/API","text":"","category":"section"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"All polynomials have the following functionality. In some cases, there is not a direct function call and therefore the polynomials have to be converted to the standard Polynomial type before continuing.","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"Pages = [\"reference.md\"]","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"DocTestSetup = quote\n using Polynomials\nend","category":"page"},{"location":"reference/#Arithmetic","page":"Reference/API","title":"Arithmetic","text":"","category":"section"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"All AbstractPolynomials have basic arithmetic operations defined on them (+, -, *, /, ÷, %, ==).","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"julia> p = Polynomial([1, 2])\nPolynomial(1 + 2*x)\n\njulia> q = Polynomial([1, 0, -1])\nPolynomial(1 - x^2)\n\njulia> 2p\nPolynomial(2 + 4*x)\n\njulia> 2 + p\nPolynomial(3 + 2*x)\n\njulia> p - q\nPolynomial(2*x + x^2)\n\njulia> p * q\nPolynomial(1 + 2*x - x^2 - 2*x^3)\n\njulia> q / 2\nPolynomial(0.5 - 0.5*x^2)","category":"page"},{"location":"reference/#Inspection","page":"Reference/API","title":"Inspection","text":"","category":"section"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"degree\nlength\nsize\nPolynomials.domain\nmapdomain\nchop\nchop!\ntruncate\ntruncate!\niszero\nPolynomials.isconstant\nPolynomials.constantterm\nisreal\nreal\nisintegral\nismonic\nPolynomials.hasnan","category":"page"},{"location":"reference/#Polynomials.degree","page":"Reference/API","title":"Polynomials.degree","text":"degree(::AbstractPolynomial)\n\nReturn the degree of the polynomial, i.e. the highest exponent in the polynomial that has a nonzero coefficient.\n\nFor standard basis polynomials the degree of the zero polynomial is defined to be -1. For Laurent type polynomials, this is 0, or lastindex(p). The firstindex method gives the smallest power of the indeterminate for the polynomial. The default method assumes the basis polynomials, βₖ, have degree k.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.length","page":"Reference/API","title":"Base.length","text":"length(::AbstractPolynomial)\n\nThe length of the polynomial.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.size","page":"Reference/API","title":"Base.size","text":"size(::AbstractPolynomial, [i])\n\nReturns the size of the polynomials coefficients, along axis i if provided.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.domain","page":"Reference/API","title":"Polynomials.domain","text":"Polynomials.domain(::Type{<:AbstractPolynomial})\n\nReturns the domain of the polynomial.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.mapdomain","page":"Reference/API","title":"Polynomials.mapdomain","text":"mapdomain(::Type{<:AbstractPolynomial}, x::AbstractArray)\nmapdomain(::AbstractPolynomial, x::AbstractArray)\n\nGiven values of x that are assumed to be unbounded (-∞, ∞), return values rescaled to the domain of the given polynomial.\n\nExamples\n\njulia> using Polynomials\n\njulia> x = -10:10\n-10:10\n\njulia> extrema(mapdomain(ChebyshevT, x))\n(-1.0, 1.0)\n\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.chop","page":"Reference/API","title":"Base.chop","text":"chop(::AbstractPolynomial{T};\n rtol::Real = Base.rtoldefault(real(T)), atol::Real = 0))\n\nRemoves any leading coefficients that are approximately 0 (using rtol and atol with norm(p)). Returns a polynomial whose degree will guaranteed to be equal to or less than the given polynomial's.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.chop!","page":"Reference/API","title":"Polynomials.chop!","text":"chop!(::AbstractPolynomial{T};\n rtol::Real = Base.rtoldefault(real(T)), atol::Real = 0))\n\nIn-place version of chop\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.truncate","page":"Reference/API","title":"Base.truncate","text":"truncate(::AbstractPolynomial{T};\n rtol::Real = Base.rtoldefault(real(T)), atol::Real = 0)\n\nRounds off coefficients close to zero, as determined by rtol and atol, and then chops any leading zeros. Returns a new polynomial.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.truncate!","page":"Reference/API","title":"Polynomials.truncate!","text":"truncate!(::AbstractPolynomial{T};\n rtol::Real = Base.rtoldefault(real(T)), atol::Real = 0)\n\nIn-place version of truncate\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.iszero","page":"Reference/API","title":"Base.iszero","text":"iszero(p::AbstractPolynomial)\n\nIs this a 0 polynomial.\n\nFor most types, the 0 polynomial is one with no coefficients (coefficient vector T[]), though some types have the possibility of trailing zeros. The degree of a zero polynomial is conventionally -1, though this is not the convention for Laurent polynomials.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.isconstant","page":"Reference/API","title":"Polynomials.isconstant","text":"isconstant(::AbstractPolynomial)\n\nIs the polynomial p a constant.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.constantterm","page":"Reference/API","title":"Polynomials.constantterm","text":"constantterm(p::AbstractPolynomial)\n\nreturn p(0), the constant term in the standard basis\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.isreal","page":"Reference/API","title":"Base.isreal","text":"isreal(p::AbstractPolynomial)\n\nDetermine whether a polynomial is a real polynomial, i.e., having only real numbers as coefficients.\n\nSee also: real\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.real","page":"Reference/API","title":"Base.real","text":"real(p::AbstractPolynomial)\n\nConstruct a real polynomial from the real parts of the coefficients of p.\n\nSee also: isreal\n\nnote: Note\nThis could cause losing terms in p. This method is usually called on polynomials like p = Polynomial([1, 2 + 0im, 3.0, 4.0 + 0.0im]) where you want to chop the imaginary parts of the coefficients of p.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.isintegral","page":"Reference/API","title":"Polynomials.isintegral","text":"isintegral(p::AbstractPolynomial)\n\nDetermine whether a polynomial is an integer polynomial, i.e., having only integers as coefficients.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.ismonic","page":"Reference/API","title":"Polynomials.ismonic","text":"ismonic(p::AbstractPolynomial)\n\nDetermine whether a polynomial is a monic polynomial, i.e., its leading coefficient is one.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.hasnan","page":"Reference/API","title":"Polynomials.hasnan","text":"hasnan(p::AbstractPolynomial) are any coefficients NaN\n\n\n\n\n\n","category":"function"},{"location":"reference/#Iteration","page":"Reference/API","title":"Iteration","text":"","category":"section"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"For the Polynomial type, a natural mapping between the polynomial a_0 + a_1 x + a_2 x^2 + cdots + a_n x^n with the coefficients (a_0 a_1 dots a_n)) leads to the view point of a polynomial being a 0-based vector. Similarly, when the basis terms are not the standard basis. The coeffs method returns these coefficients in an iterable (a vector or tuple). For Laurent type polynomials, the coefficients between firstindex(p) and lastindex(p) are returned.","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"More generally, pairs(p) returns values i => aᵢ where the polynomial has terms a_i T_i for the basis T_i. (For sparse polynomials these need not be in order and only terms where a_i ne 0 are given.) The keys and values methods iterate over i and aᵢ.","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"The firstindex method refers to the lowest stored basis index, which due to offsets need not be 0. It will be no smaller than Polynomials.minimumexponent, which is the smalled allowed index for the polynomial type. The lastindex method refers to the last basis index. If the type allows trailing zeros (like ImmutablePolynomial) this will differ from the value returned by degree.","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"The getindex(p,i) method returns p_i or zero when out of bounds (if the element type of the polynomial has zero(T) defined). For mutable polynomials, the setindex!(p, val, i) method sets p[i] to val. This may extend the underlying storage container for some polynomial types. For ImmutablePolynomial the @set! macro from Setfield can be used with the typical setindex! notation.","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"The map(fn, p) method maps fn over the coefficients and returns a polynomial with the same polynomial type as p.","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"coeffs\npairs\nvalues\nkeys\nfirstindex\nlastindex\neachindex\nmap","category":"page"},{"location":"reference/#Polynomials.coeffs","page":"Reference/API","title":"Polynomials.coeffs","text":"coeffs(::AbstractPolynomial)\ncoeffs(::AbstractDenseUnivariatePolynomial)\ncoeffs(::AbstractLaurentUnivariatePolynomial)\n\nFor a dense, univariate polynomial return the coefficients (a_0 a_1 dots a_n) as an interable. This may be a vector or tuple, and may alias the polynomials coefficients.\n\nFor a Laurent type polynomial (e.g. LaurentPolynomial, SparsePolynomial) return the coefficients (a_i a_i+1 dots a_j) where i is found from firstindex(p) and j from lastindex(p).\n\nFor LaurentPolynomial and SparsePolynomial, the pairs iterator is more generically useful, as it iterates over (i p_i) possibly skipping the terms where p_i = 0.\n\nDefaults to p.coeffs.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.pairs","page":"Reference/API","title":"Base.pairs","text":"pairs(p::AbstractPolynomial)\n\nIterator over (i p_i) for each basis element, beta_i, represented by the coefficients.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.values","page":"Reference/API","title":"Base.values","text":"values(p::AbstractPolynomial)\n\nIterator over p_is for each basis element, beta_i, represented by the coefficients.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.keys","page":"Reference/API","title":"Base.keys","text":"keys(p::AbstractPolynomial)\n\nIterator over is for each basis element, beta_i, represented by the coefficients.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.firstindex","page":"Reference/API","title":"Base.firstindex","text":"firstindex(p::AbstractPolynomial)\n\nThe index of the smallest basis element, eta_i, represented by the coefficients. This is 0 for a zero polynomial.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.lastindex","page":"Reference/API","title":"Base.lastindex","text":"lastindex(p::AbstractPolynomial)\n\nThe index of the largest basis element, eta_i, represented by the coefficients. May be -1 or 0 for the zero polynomial, depending on the storage type.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.eachindex","page":"Reference/API","title":"Base.eachindex","text":"eachindex(p::AbstractPolynomial)\n\nIterator over all indices of the represented basis elements\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.map","page":"Reference/API","title":"Base.map","text":"map(fn, p::AbstractPolynomial, args...)\n\nTransform coefficients of p by applying a function (or other callables) fn to each of them.\n\nYou can implement real, etc., to a Polynomial by using map. The type of p may narrow using this function.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Mathematical-Functions","page":"Reference/API","title":"Mathematical Functions","text":"","category":"section"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"zero\none\nvariable\nPolynomials.basis\nfromroots\ngcd\nderivative\nintegrate\nroots\ncompanion\nfit\nvander","category":"page"},{"location":"reference/#Base.zero","page":"Reference/API","title":"Base.zero","text":"zero(::Type{<:AbstractPolynomial})\nzero(::AbstractPolynomial)\n\nReturns a representation of 0 as the given polynomial.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.one","page":"Reference/API","title":"Base.one","text":"one(::Type{<:AbstractPolynomial})\none(::AbstractPolynomial)\n\nReturns a representation of 1 as the given polynomial.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.variable","page":"Reference/API","title":"Polynomials.variable","text":"variable(var=:x)\nvariable(::Type{<:AbstractPolynomial}, var=:x)\nvariable(p::AbstractPolynomial, var=indeterminate(p))\n\nReturn the monomial x in the indicated polynomial basis. If no type is give, will default to Polynomial. Equivalent to P(var).\n\nExamples\n\njulia> using Polynomials\n\njulia> x = variable()\nPolynomial(x)\n\njulia> p = 100 + 24x - 3x^2\nPolynomial(100 + 24*x - 3*x^2)\n\njulia> roots((x - 3) * (x + 2))\n2-element Vector{Float64}:\n -2.0\n 3.0\n\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.basis","page":"Reference/API","title":"Polynomials.basis","text":"basis(p::P, i::Int)\nbasis(::Type{<:AbstractPolynomial}, i::Int, var=:x)\n\nReturn ith basis element for a given polynomial type, optionally with a specified variable.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.fromroots","page":"Reference/API","title":"Polynomials.fromroots","text":"fromroots(::AbstractVector{<:Number}; var=:x)\nfromroots(::Type{<:AbstractPolynomial}, ::AbstractVector{<:Number}; var=:x)\n\nConstruct a polynomial of the given type given the roots. If no type is given, defaults to Polynomial.\n\nExamples\n\njulia> using Polynomials\n\njulia> r = [3, 2]; # (x - 3)(x - 2)\n\njulia> fromroots(r)\nPolynomial(6 - 5*x + x^2)\n\n\n\n\n\nfromroots(::AbstractMatrix{<:Number}; var=:x)\nfromroots(::Type{<:AbstractPolynomial}, ::AbstractMatrix{<:Number}; var=:x)\n\nConstruct a polynomial of the given type using the eigenvalues of the given matrix as the roots. If no type is given, defaults to Polynomial.\n\nExamples\n\njulia> using Polynomials\n\njulia> A = [1 2; 3 4]; # (x - 5.37228)(x + 0.37228)\n\njulia> fromroots(A)\nPolynomial(-1.9999999999999998 - 5.0*x + 1.0*x^2)\n\n\n\n\n\n","category":"function"},{"location":"reference/#Base.gcd","page":"Reference/API","title":"Base.gcd","text":"gcd(a::AbstractPolynomial, b::AbstractPolynomial; atol::Real=0, rtol::Real=Base.rtoldefault)\n\nFind the greatest common denominator of two polynomials recursively using Euclid's algorithm.\n\nExamples\n\njulia> using Polynomials\n\njulia> gcd(fromroots([1, 1, 2]), fromroots([1, 2, 3]))\nPolynomial(4.0 - 6.0*x + 2.0*x^2)\n\n\n\n\n\n\ngcd(p1::StandardBasisPolynomial, p2::StandardBasisPolynomial; method=:euclidean, kwargs...)\n\nFind the greatest common divisor.\n\nBy default, uses the Euclidean division algorithm (method=:euclidean), which is susceptible to floating point issues.\n\nPassing method=:noda_sasaki uses scaling to circumvent some of these.\n\nPassing method=:numerical will call the internal method NGCD.ngcd for the numerical gcd. See the help page of Polynomials.NGCD.ngcd(p,q) for details.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.derivative","page":"Reference/API","title":"Polynomials.derivative","text":"derivative(::AbstractPolynomial, order::Int = 1)\n\nReturns a polynomial that is the orderth derivative of the given polynomial. order must be non-negative.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.integrate","page":"Reference/API","title":"Polynomials.integrate","text":"integrate(p::AbstractPolynomial)\n\nReturn an antiderivative for p\n\n\n\n\n\nintegrate(::AbstractPolynomial, C)\n\nReturns the indefinite integral of the polynomial with constant C when expressed in the standard basis.\n\n\n\n\n\nintegrate(::AbstractPolynomial, a, b)\n\nCompute the definite integral of the given polynomial from a to b. Will throw an error if either a or b are out of the polynomial's domain.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.roots","page":"Reference/API","title":"Polynomials.roots","text":"roots(::AbstractPolynomial; kwargs...)\n\nReturns the roots, or zeros, of the given polynomial.\n\nFor non-factored, standard basis polynomials the roots are calculated via the eigenvalues of the companion matrix. The kwargs are passed to the LinearAlgebra.eigvals call.\n\nnote: Note\nThe default roots implementation is for polynomials in the standard basis. The companion matrix approach is reasonably fast and accurate for modest-size polynomials. However, other packages in the Julia ecosystem may be of interest and are mentioned in the documentation.\n\n\n\n\n\nroots(pq::AbstractRationalFunction; kwargs...)\n\nReturn the zeros of the rational function (after cancelling commong factors, the zeros are the roots of the numerator.\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.companion","page":"Reference/API","title":"Polynomials.companion","text":"companion(::AbstractPolynomial)\n\nReturn the companion matrix for the given polynomial.\n\nReferences\n\nCompanion Matrix\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.fit","page":"Reference/API","title":"Polynomials.fit","text":"fit(x, y, deg=length(x) - 1; [weights], var=:x)\nfit(::Type{<:AbstractPolynomial}, x, y, deg=length(x)-1; [weights], var=:x)\n\nFit the given data as a polynomial type with the given degree. Uses linear least squares to minimize the norm ||y - V⋅β||^2, where V is the Vandermonde matrix and β are the coefficients of the polynomial fit.\n\nThis will automatically scale your data to the domain of the polynomial type using mapdomain. The default polynomial type is Polynomial.\n\nWeights\n\nWeights may be assigned to the points by specifying a vector or matrix of weights.\n\nWhen specified as a vector, [w₁,…,wₙ], the weights should be non-negative as the minimization problem is argmin_β Σᵢ wᵢ |yᵢ - Σⱼ Vᵢⱼ βⱼ|² = argmin_β || √(W)⋅(y - V(x)β)||², where, W the diagonal matrix formed from [w₁,…,wₙ], is used for the solution, V being the Vandermonde matrix of x corresponding to the specified degree. This parameterization of the weights is different from that of numpy.polyfit, where the weights would be specified through [ω₁,ω₂,…,ωₙ] = [√w₁, √w₂,…,√wₙ] with the answer solving argminᵦ | (ωᵢ⋅yᵢ- ΣⱼVᵢⱼ(ω⋅x) βⱼ) |^2.\n\nWhen specified as a matrix, W, the solution is through the normal equations (VᵀWV)β = (Vᵀy), again V being the Vandermonde matrix of x corresponding to the specified degree.\n\n(In statistics, the vector case corresponds to weighted least squares, where weights are typically given by wᵢ = 1/σᵢ², the σᵢ² being the variance of the measurement; the matrix specification follows that of the generalized least squares estimator with W = Σ⁻¹, the inverse of the variance-covariance matrix.)\n\nlarge degree\n\nFor fitting with a large degree, the Vandermonde matrix is exponentially ill-conditioned. The ArnoldiFit type introduces an Arnoldi orthogonalization that fixes this problem.\n\n\n\n\n\nfit(P::Type{<:StandardBasisPolynomial}, x, y, J, [cs::Dict{Int, T}]; weights, var)\n\nUsing constrained least squares, fit a polynomial of the type p = ∑_{i ∈ J} aᵢ xⁱ + ∑ cⱼxʲ where cⱼ are fixed non-zero constants\n\nJ: a collection of degrees to find coefficients for\ncs: If given, a Dict of key/values, i => cᵢ, which indicate the degree and value of the fixed non-zero constants.\n\nThe degrees in cs and those in J should not intersect.\n\nExample\n\nx = range(0, pi/2, 10)\ny = sin.(x)\nP = Polynomial\np0 = fit(P, x, y, 5)\np1 = fit(P, x, y, 1:2:5)\np2 = fit(P, x, y, 3:2:5, Dict(1 => 1))\n[norm(p.(x) - y) for p ∈ (p0, p1, p2)] # 1.7e-5, 0.00016, 0.000248\n\n\n\n\n\nfit(::Type{RationalFunction}, xs::AbstractVector{S}, ys::AbstractVector{T}, m, n; var=:x)\n\nFit a rational function of the form pq = (a₀ + a₁x¹ + … + aₘxᵐ) / (1 + b₁x¹ + … + bₙxⁿ) to the data (x,y).\n\nnote: Note\nThis uses a simple implementation of the Gauss-Newton method to solve the non-linear least squares problem: minᵦ Σ(yᵢ - pq(xᵢ,β)², where β=(a₀,a₁,…,aₘ,b₁,…,bₙ).A more rapidly convergent method is used in the LsqFit.jl package, and if performance is important, re-expressing the problem for use with that package is suggested.Further, if an accurate rational function fit of adaptive degrees is of interest, the BaryRational.jl package provides an implementation of the AAA algorithm (\"which offers speed, flexibility, and robustness we have not seen in other algorithms\" Nakatsukasa, Sète, Trefethen) and one using Floater-Hormann weights Floater, Hormann (\"that have no real poles and arbitrarily high approximation orders on any real interval, regardless of the distribution of the points\")The RationalApproximations package also has implementations of the AAA algorithm.A python library, polyrat, has implementations of other algorithms.\n\nExample\n\njulia> x = variable(Polynomial{Float64})\nPolynomial(1.0*x)\n\njulia> pq = (1+x)//(1-x)\n(1.0 + 1.0*x) // (1.0 - 1.0*x)\n\njulia> xs = 2.0:.1:3;\n\njulia> ys = pq.(xs);\n\njulia> v = fit(RationalFunction, xs, ys, 2, 2)\n(1.0 + 1.0*x - 6.82121e-13*x^2) // (1.0 - 1.0*x + 2.84217e-13*x^2)\n\njulia> maximum(abs, v(x)-pq(x) for x ∈ 2.1:0.1:3.0)\n1.06314956838105e-12\n\njulia> using BaryRational\n\njulia> u = aaa(xs,ys)\n(::BaryRational.AAAapprox{Vector{Float64}}) (generic function with 1 method)\n\njulia> maximum(abs, u(x)-pq(x) for x ∈ 2.1:0.1:3.0)\n4.440892098500626e-16\n\njulia> u(variable(pq)) # to see which polynomial is used\n(2.68328 + 0.447214*x - 1.78885*x^2 + 0.447214*x^3) // (2.68328 - 4.91935*x + 2.68328*x^2 - 0.447214*x^3)\n\n\n\n\n\nfit(::Type{RationalFunction}, r::Polynomial, m, n; var=:x)\n\nFit a Pade approximant (pade_fit) to r.\n\nExamples:\n\njulia> using Polynomials, PolynomialRatios\n\njulia> x = variable()\nPolynomial(x)\n\njulia> ex = 1 + x + x^2/2 + x^3/6 + x^4/24 + x^5/120 # Taylor polynomial for e^x\nPolynomial(1.0 + 1.0*x + 0.5*x^2 + 0.16666666666666666*x^3 + 0.041666666666666664*x^4 + 0.008333333333333333*x^5)\n\njulia> maximum(abs, exp(x) - fit(RationalFunction, ex, 1,1)(x) for x ∈ 0:.05:0.5)\n0.017945395966538547\n\njulia> maximum(abs, exp(x) - fit(RationalFunction, ex, 1,2)(x) for x ∈ 0:.05:0.5)\n0.0016624471707165078\n\njulia> maximum(abs, exp(x) - fit(RationalFunction, ex, 2,1)(x) for x ∈ 0:.05:0.5)\n0.001278729299871717\n\njulia> maximum(abs, exp(x) - fit(RationalFunction, ex, 2,2)(x) for x ∈ 0:.05:0.5)\n7.262205147950951e-5\n\n\n\n\n\n","category":"function"},{"location":"reference/#Polynomials.vander","page":"Reference/API","title":"Polynomials.vander","text":"vander(::Type{AbstractPolynomial}, x::AbstractVector, deg::Integer)\n\nCalculate the pseudo-Vandermonde matrix of the given polynomial type with the given degree.\n\nReferences\n\nVandermonde Matrix\n\n\n\n\n\n","category":"function"},{"location":"reference/#Plotting","page":"Reference/API","title":"Plotting","text":"","category":"section"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"Polynomials can be plotted directly using Plots.jl or Makie.jl.","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"plot(::AbstractPolynomial; kwds...)","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"will automatically determine a range based on the critical points (roots, extrema and points of inflection).","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"plot(::AbstractPolynomial, a, b; kwds...)","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"will plot the polynomial within the range [a, b].","category":"page"},{"location":"reference/#Example:-The-Polynomials.jl-logo","page":"Reference/API","title":"Example: The Polynomials.jl logo","text":"","category":"section"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"using Plots, Polynomials\n# T1, T2, T3, and T4:\nchebs = [\n ChebyshevT([0, 1]),\n ChebyshevT([0, 0, 1]),\n ChebyshevT([0, 0, 0, 1]),\n ChebyshevT([0, 0, 0, 0, 1]),\n]\ncolors = [\"#4063D8\", \"#389826\", \"#CB3C33\", \"#9558B2\"]\n\np = plot(legend=false, label=\"\")\nfor (cheb, col) in zip(chebs, colors)\n plot!(cheb, c=col, lw=5)\nend\nsavefig(\"chebs.svg\"); nothing # hide","category":"page"},{"location":"reference/","page":"Reference/API","title":"Reference/API","text":"(Image: )","category":"page"},{"location":"#Polynomials.jl","page":"Home","title":"Polynomials.jl","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Polynomials.jl is a Julia package that provides basic arithmetic, integration, differentiation, evaluation, root finding, and data fitting for univariate polynomials.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The Polynomials package is hosted on GitHub and installed as other Julia packages. As of version v3.0.0 Julia version 1.6 or higher is required.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The package can be loaded into the current session through","category":"page"},{"location":"","page":"Home","title":"Home","text":"using Polynomials","category":"page"},{"location":"","page":"Home","title":"Home","text":"DocTestSetup = quote\n using Polynomials\nend","category":"page"},{"location":"#Construction-and-Evaluation","page":"Home","title":"Construction and Evaluation","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Construct a polynomial from its coefficients, lowest order first.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> Polynomial([1,0,3,4])\nPolynomial(1 + 3*x^2 + 4*x^3)","category":"page"},{"location":"","page":"Home","title":"Home","text":"An optional variable parameter can be added.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> Polynomial([1,2,3], :s)\nPolynomial(1 + 2*s + 3*s^2)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Construct a polynomial from its roots.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> fromroots([1,2,3]) # (x-1)*(x-2)*(x-3)\nPolynomial(-6 + 11*x - 6*x^2 + x^3)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Evaluate the polynomial p at 1 using call notation:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = Polynomial([1, 0, -1])\nPolynomial(1 - x^2)\n\njulia> p(1)\n0\n","category":"page"},{"location":"","page":"Home","title":"Home","text":"The Polynomial constructor stores all coefficients using the standard basis with a vector. Other types (e.g. ImmutablePolynomial, SparsePolynomial, or FactoredPolynomial) use different back-end containers which may have advantage for some uses.","category":"page"},{"location":"#Arithmetic","page":"Home","title":"Arithmetic","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"The usual arithmetic operators are overloaded to work on polynomials, and combinations of polynomials and scalars.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = Polynomial([1,2])\nPolynomial(1 + 2*x)\n\njulia> q = Polynomial([1, 0, -1])\nPolynomial(1 - x^2)\n\njulia> 2p\nPolynomial(2 + 4*x)\n\njulia> 2 + p\nPolynomial(3 + 2*x)\n\njulia> p - q\nPolynomial(2*x + x^2)\n\njulia> p * q\nPolynomial(1 + 2*x - x^2 - 2*x^3)\n\njulia> q / 2\nPolynomial(0.5 - 0.5*x^2)\n\njulia> q ÷ p # `div`, also `rem` and `divrem`\nPolynomial(0.25 - 0.5*x)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Note that operations involving polynomials with different variables will error.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = Polynomial([1, 2, 3], :x)\nPolynomial(1 + 2*x + 3*x^2)\n\njulia> q = Polynomial([1, 2, 3], :s)\nPolynomial(1 + 2*s + 3*s^2)\n\njulia> p + q\nERROR: ArgumentError: Polynomials have different indeterminates\n[...]","category":"page"},{"location":"","page":"Home","title":"Home","text":"Except for operations involving constant polynomials.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = Polynomial([1, 2, 3], :x)\nPolynomial(1 + 2*x + 3*x^2)\n\njulia> q = Polynomial(1, :y)\nPolynomial(1)\n\njulia> p + q\nPolynomial(2 + 2*x + 3*x^2)","category":"page"},{"location":"#Mixing-polynomial-types","page":"Home","title":"Mixing polynomial types","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Arithmetic of different polynomial types is supported through promotion to a common type, which is typically the Polynomial type, but may be the LaurentPolynomial type when negative powers of the indeterminate are possible:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p, q = ImmutablePolynomial([1,2,3]), Polynomial([3,2,1])\n(ImmutablePolynomial(1 + 2*x + 3*x^2), Polynomial(3 + 2*x + x^2))\n\njulia> p + q\nPolynomial(4 + 4*x + 4*x^2)\n\njulia> p, q = ImmutablePolynomial([1,2,3]), SparsePolynomial(Dict(0=>1, 2=>3, 10=>1))\n(ImmutablePolynomial(1 + 2*x + 3*x^2), SparsePolynomial(1 + 3*x^2 + x^10))\n\njulia> p + q\nLaurentPolynomial(2 + 2*x + 6*x² + x¹⁰)","category":"page"},{"location":"#Integrals-and-Derivatives","page":"Home","title":"Integrals and Derivatives","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Integrate the polynomial p term by term, optionally adding constant term C. For non-zero polynomials, the degree of the resulting polynomial is one higher than the degree of p.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> integrate(Polynomial([1, 0, -1]))\nPolynomial(1.0*x - 0.3333333333333333*x^3)\n\njulia> integrate(Polynomial([1, 0, -1]), 2)\nPolynomial(2.0 + 1.0*x - 0.3333333333333333*x^3)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Differentiate the polynomial p term by term. For non-zero polynomials, the degree of the resulting polynomial is one lower than the degree of p.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> derivative(Polynomial([1, 3, -1]))\nPolynomial(3 - 2*x)","category":"page"},{"location":"#Root-finding","page":"Home","title":"Root-finding","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Return the d roots (or zeros) of the degree d polynomial p.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> roots(Polynomial([1, 0, -1]))\n2-element Vector{Float64}:\n -1.0\n 1.0\n\njulia> roots(Polynomial([1, 0, 1]))\n2-element Vector{ComplexF64}:\n 0.0 - 1.0im\n 0.0 + 1.0im\n\njulia> roots(Polynomial([0, 0, 1]))\n2-element Vector{Float64}:\n 0.0\n 0.0","category":"page"},{"location":"","page":"Home","title":"Home","text":"By design, this is not type-stable; the return type may be real or complex.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The default roots function uses the eigenvalues of the companion matrix for a polynomial. This is an 𝑶(n^3) operation.","category":"page"},{"location":"","page":"Home","title":"Home","text":"For polynomials with BigFloat coefficients, the GenericLinearAlgebra package can be seamlessly used:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = fromroots(Polynomial{BigFloat}, [1,2,3])\nPolynomial(-6.0 + 11.0*x - 6.0*x^2 + 1.0*x^3)\n\njulia> roots(p)\nERROR: MethodError: no method matching eigvals!(::Matrix{BigFloat})\n[...]\n\njulia> using GenericLinearAlgebra\n\njulia> roots(p)\n3-element Vector{Complex{BigFloat}}:\n 0.9999999999999999999999999999999999999999999999999999999999999999999999999999655 + 0.0im\n 1.999999999999999999999999999999999999999999999999999999999999999999999999999931 - 0.0im\n 2.999999999999999999999999999999999999999999999999999999999999999999999999999793 + 0.0im","category":"page"},{"location":"#Comments-on-root-finding","page":"Home","title":"Comments on root finding","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"The PolynomialRoots.jl package provides an alternative approach for finding complex roots to univariate polynomials that is more performant than roots. It is based on an algorithm of Skowron and Gould.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> import PolynomialRoots # import as `roots` conflicts\n\njulia> p = fromroots(Polynomial, [1,2,3])\nPolynomial(-6 + 11*x - 6*x^2 + x^3)\n\njulia> PolynomialRoots.roots(coeffs(p))\n3-element Vector{ComplexF64}:\n 3.000000000000001 - 0.0im\n 1.9999999999999993 + 0.0im\n 1.0000000000000002 + 0.0im","category":"page"},{"location":"","page":"Home","title":"Home","text":"The roots are always returned as complex numbers.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The FastPolynomialRoots package provides an interface to FORTRAN code implementing an algorithm of Aurentz, Mach, Robol, Vandrebril, and Watkins. that can handle very large polynomials (it is 𝑶(n^2) and backward stable). The AMRVW.jl package implements the algorithm in Julia, allowing the use of other number types.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> using AMRVW\n\njulia> AMRVW.roots(float.(coeffs(p)))\n3-element Vector{ComplexF64}:\n 0.9999999999999997 + 0.0im\n 2.0000000000000036 + 0.0im\n 2.9999999999999964 + 0.0im","category":"page"},{"location":"","page":"Home","title":"Home","text":"The roots are returned as complex numbers.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Both PolynomialRoots and AMRVW are generic and work with BigFloat coefficients, for example.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The AMRVW package works with much larger polynomials than either roots or PolynomialRoots.roots. For example, the roots of this 1000 degree random polynomial are quickly and accurately solved for:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> filter(isreal, AMRVW.roots(rand(1001) .- 1/2))\n2-element Vector{ComplexF64}:\n 0.993739974989572 + 0.0im\n 1.0014677846996498 + 0.0im","category":"page"},{"location":"","page":"Home","title":"Home","text":"The Hecke package has a roots function. The Hecke package utilizes the Arb library for performant, high-precision numbers:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> import Hecke # import as `roots` conflicts\n\njulia> Qx, x = Hecke.PolynomialRing(Hecke.QQ)\n(Univariate Polynomial Ring in x over Rational Field, x)\n\njulia> q = (x-1)*(x-2)*(x-3)\nx^3 - 6*x^2 + 11*x - 6\n\njulia> Hecke.roots(q)\n3-element Vector{Nemo.fmpq}:\n 2\n 1\n 3","category":"page"},{"location":"","page":"Home","title":"Home","text":"This next polynomial has 3 real roots, 2 of which are in a cluster; Hecke quickly identifies them:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = -1 + 254*x - 16129*x^2 + 1*x^17\nx^17 - 16129*x^2 + 254*x - 1\n\njulia> filter(isreal, Hecke._roots(p, 200)) # `_roots` not `roots`\n3-element Vector{Nemo.acb}:\n [0.007874015748031496052667730054749907629383970426203662570129818116411192289734968717460531379762086419 +/- 3.10e-103]\n [0.0078740157480314960733165219137540296086246589982151627453855179522742093785877068332663198273096875302 +/- 9.31e-104]\n [1.9066348541790688341521872066398429982632947292434604847312536201982593209326201234353468172497707769372732739429697289 +/- 7.14e-119]","category":"page"},{"location":"","page":"Home","title":"Home","text":"","category":"page"},{"location":"","page":"Home","title":"Home","text":"To find just the real roots of a polynomial with real coefficients there are a few additional options to solving for all the roots and filtering by isreal.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The package IntervalRootFinding identifies real zeros of univariate functions and can be used to find isolating intervals for the real roots. For example,","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> using Polynomials, IntervalArithmetic\n\njulia> import IntervalRootFinding # its `roots` method conflicts with `roots`\n\njulia> p = fromroots(Polynomial, [1,2,3])\nPolynomial(-6 + 11*x - 6*x^2 + x^3)\n\njulia> IntervalRootFinding.roots(x -> p(x), 0..10)\n3-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:\n Root([0.999999, 1.00001], :unique)\n Root([1.99999, 2.00001], :unique)\n Root([2.99999, 3.00001], :unique)","category":"page"},{"location":"","page":"Home","title":"Home","text":"The output is a set of intervals. Those flagged with :unique are guaranteed to contain a unique root.","category":"page"},{"location":"","page":"Home","title":"Home","text":"The RealPolynomialRoots package provides a function ANewDsc to find isolating intervals for the roots of a square-free polynomial, specified through its coefficients:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> using RealPolynomialRoots\n\njulia> st = ANewDsc(coeffs(p))\nThere were 3 isolating intervals found:\n[2.62…, 3.62…]₂₅₆\n[1.5…, 2.62…]₂₅₆\n[-0.50…, 1.5…]₂₅₆","category":"page"},{"location":"","page":"Home","title":"Home","text":"These isolating intervals can be refined to find numeric estimates for the roots over BigFloat values.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> refine_roots(st)\n3-element Vector{BigFloat}:\n 2.99999999999999999999...\n 2.00000000000000000000...\n 1.00000000000000000000...","category":"page"},{"location":"","page":"Home","title":"Home","text":"This specialized algorithm can identify very nearby roots. For example, returning to this Mignotte-type polynomial:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = SparsePolynomial(Dict(0=>-1, 1=>254, 2=>-16129, 17=>1))\nSparsePolynomial(-1 + 254*x - 16129*x^2 + x^17)\n\njulia> ANewDsc(coeffs(p))\nThere were 3 isolating intervals found:\n[1.5…, 3.5…]₅₃\n[0.0078740157480314960682066…, 0.0078740157480314960873178…]₁₃₉\n[0.0078740157480314960492543…, 0.0078740157480314960682066…]₁₃₉","category":"page"},{"location":"","page":"Home","title":"Home","text":"IntervalRootFinding has issues disambiguating the clustered roots of this example:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> IntervalRootFinding.roots(x -> p(x), 0..3.5)\n7-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:\n Root([1.90663, 1.90664], :unique)\n Root([0.00787464, 0.00787468], :unknown)\n Root([0.00787377, 0.00787387], :unknown)\n Root([0.00787405, 0.00787412], :unknown)\n Root([0.00787396, 0.00787406], :unknown)\n Root([0.00787425, 0.00787431], :unknown)\n Root([0.00787394, 0.00787397], :unknown)","category":"page"},{"location":"","page":"Home","title":"Home","text":"For this example, filter(isreal, Hecke._roots(p)) also isolates the three real roots, but not quite as quickly.","category":"page"},{"location":"","page":"Home","title":"Home","text":"","category":"page"},{"location":"","page":"Home","title":"Home","text":"Most of the root finding algorithms have issues when the roots have multiplicities. For example, both ANewDsc and Hecke.roots assume a square free polynomial. For non-square free polynomials:","category":"page"},{"location":"","page":"Home","title":"Home","text":"The Polynomials.Multroot.multroot function is available for finding the roots of a polynomial and their multiplicities. This is based on work of Zeng.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Here we see IntervalRootFinding.roots having trouble isolating the roots due to the multiplicities:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = fromroots(Polynomial, [1,2,2,3,3])\nPolynomial(-36 + 96*x - 97*x^2 + 47*x^3 - 11*x^4 + x^5)\n\njulia> IntervalRootFinding.roots(x -> p(x), 0..10)\n335-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:\n Root([1.99999, 2], :unknown)\n Root([1.99999, 2], :unknown)\n Root([3, 3.00001], :unknown)\n Root([2.99999, 3], :unknown)\n ⋮\n Root([2.99999, 3], :unknown)\n Root([2, 2.00001], :unknown)","category":"page"},{"location":"","page":"Home","title":"Home","text":"The roots function identifies the roots, but the multiplicities would need identifying:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> roots(p)\n5-element Vector{Float64}:\n 1.000000000000011\n 1.9999995886034314\n 2.0000004113969276\n 2.9999995304339646\n 3.0000004695656672","category":"page"},{"location":"","page":"Home","title":"Home","text":"Whereas, the roots along with the multiplicity structure are correctly identified with multroot:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> Polynomials.Multroot.multroot(p)\n(values = [1.0000000000000004, 1.9999999999999984, 3.0000000000000018], multiplicities = [1, 2, 2], κ = 35.11176306900731, ϵ = 0.0)","category":"page"},{"location":"","page":"Home","title":"Home","text":"The square_free function can help:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> q = Polynomials.square_free(p)\nANewDsc(q)\nPolynomial(-0.20751433915978448 + 0.38044295512633425*x - 0.20751433915986722*x^2 + 0.03458572319332053*x^3)\n\njulia> IntervalRootFinding.roots(x -> q(x), 0..10)\n3-element Vector{IntervalRootFinding.Root{Interval{Float64}}}:\n Root([0.999999, 1.00001], :unique)\n Root([1.99999, 2.00001], :unique)\n Root([2.99999, 3.00001], :unique)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Similarly:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> ANewDsc(coeffs(q))\nThere were 3 isolating intervals found:\n[2.62…, 3.62…]₂₅₆\n[1.5…, 2.62…]₂₅₆\n[-0.50…, 1.5…]₂₅₆","category":"page"},{"location":"#Fitting-a-polynomial-to-arbitrary-data","page":"Home","title":"Fitting a polynomial to arbitrary data","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"The fit function will fit a polynomial (of degree deg) to data x and y using polynomial interpolation or a (weighted) least-squares approximation.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Fit a polynomial (of degree deg or less) to x and y using a least-squares approximation.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> xs = 0:4; ys = @. exp(-xs) + sin(xs);\n\njulia> p = fit(xs, ys); map(x -> round(x, digits=4), p)\nPolynomial(1.0 + 0.0593*x + 0.3959*x^2 - 0.2846*x^3 + 0.0387*x^4)\n\njulia> p = fit(ChebyshevT, xs, ys, 2); map(x -> round(x, digits=4), p)\nChebyshevT(0.5413⋅T_0(x) - 0.8991⋅T_1(x) - 0.4238⋅T_2(x))","category":"page"},{"location":"","page":"Home","title":"Home","text":"This provides a visual example:","category":"page"},{"location":"","page":"Home","title":"Home","text":"using Plots, Polynomials\n\nxs = range(0, 10, length=10)\nys = @. exp(-xs)\n\nf = fit(xs, ys) # degree = length(xs) - 1\nf2 = fit(xs, ys, 2) # degree = 2\n\nscatter(xs, ys, markerstrokewidth=0, label=\"Data\")\nplot!(f, extrema(xs)..., label=\"Interpolation\")\nplot!(f2, extrema(xs)..., label=\"Quadratic Fit\")\nsavefig(\"polyfit.svg\"); nothing # hide","category":"page"},{"location":"","page":"Home","title":"Home","text":"(Image: )","category":"page"},{"location":"#Other-bases","page":"Home","title":"Other bases","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"A polynomial, e.g. a_0 + a_1 x + a_2 x^2 + ... + a_n x^n, can be seen as a collection of coefficients, [a_0, a_1, ..., a_n], relative to some polynomial basis. The most familiar basis being the standard one: 1, x, x^2, ... Alternative bases are possible. The ChebyshevT polynomials are implemented, as an example. The constructor is ChebyshevT, an exposed alias for MutableDensePolynomial{ChebyshevTBasis}.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p1 = ChebyshevT([1.0, 2.0, 3.0])\nChebyshevT(1.0⋅T_0(x) + 2.0⋅T_1(x) + 3.0⋅T_2(x))\n\njulia> p2 = ChebyshevT{Float64}([0, 1, 2])\nChebyshevT(1.0⋅T_1(x) + 2.0⋅T_2(x))\n\njulia> p1 + p2\nChebyshevT(1.0⋅T_0(x) + 3.0⋅T_1(x) + 5.0⋅T_2(x))\n\njulia> p1 * p2\nChebyshevT(4.0⋅T_0(x) + 4.5⋅T_1(x) + 3.0⋅T_2(x) + 3.5⋅T_3(x) + 3.0⋅T_4(x))\n\njulia> derivative(p1)\nChebyshevT(2.0⋅T_0(x) + 12.0⋅T_1(x))\n\njulia> integrate(p2)\nChebyshevT(- 1.0⋅T_1(x) + 0.25⋅T_2(x) + 0.3333333333333333⋅T_3(x))\n\njulia> convert(Polynomial, p1)\nPolynomial(-2.0 + 2.0*x + 6.0*x^2)\n\njulia> convert(ChebyshevT, Polynomial([1.0, 2, 3]))\nChebyshevT(2.5⋅T_0(x) + 2.0⋅T_1(x) + 1.5⋅T_2(x))","category":"page"},{"location":"#Iteration","page":"Home","title":"Iteration","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"If its basis is implicit, then a polynomial may be seen as just a vector of coefficients. Vectors are 1-based, but, for convenience, most polynomial types are naturally 0-based, for purposes of indexing (e.g. getindex, setindex!, eachindex). Iteration over a polynomial steps through the underlying coefficients.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> as = [1,2,3,4,5]; p = Polynomial(as);\n\njulia> as[3], p[2], collect(p)[3]\n(3, 3, 3)","category":"page"},{"location":"","page":"Home","title":"Home","text":"The pairs iterator, iterates over the indices and coefficients, attempting to match how pairs applies to the underlying storage model:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> v = [1,2,0,4]\n4-element Vector{Int64}:\n 1\n 2\n 0\n 4\n\njulia> p,ip,sp,lp = Polynomial(v), ImmutablePolynomial(v), SparsePolynomial(v), LaurentPolynomial(v, -1);\n\njulia> collect(pairs(p))\n4-element Vector{Pair{Int64, Int64}}:\n 0 => 1\n 1 => 2\n 2 => 0\n 3 => 4\n\njulia> collect(pairs(ip)) == collect(pairs(p))\ntrue\n\njulia> collect(pairs(sp)) # unordered dictionary with only non-zero terms\n3-element Vector{Pair{Int64, Int64}}:\n 0 => 1\n 3 => 4\n 1 => 2\n\njulia> collect(pairs(lp))\n4-element Vector{Pair{Int64, Int64}}:\n -1 => 1\n 0 => 2\n 1 => 0\n 2 => 4","category":"page"},{"location":"","page":"Home","title":"Home","text":"The unexported monomials iterator iterates over the terms (p[i]*Polynomials.basis(p,i)) of the polynomial:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = Polynomial([1,2,0,4], :u)\nPolynomial(1 + 2*u + 4*u^3)\n\njulia> collect(Polynomials.monomials(p))\n4-element Vector{Any}:\n Polynomial(1)\n Polynomial(2*u)\n Polynomial(0)\n Polynomial(4*u^3)","category":"page"},{"location":"","page":"Home","title":"Home","text":"The map function for polynomials is idiosyncratic, as iteration over polynomials is over the vector of coefficients, but map will also maintain the type of the polynomial. Here we use map to smooth out the round-off error coming from the root-finding algorithm used internally when converting to the FactoredPolynomial type:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = Polynomial([24, -50, 35, -10, 1])\nPolynomial(24 - 50*x + 35*x^2 - 10*x^3 + x^4)\n\njulia> q = convert(FactoredPolynomial, p) # noisy form of `factor`:\nFactoredPolynomial((x - 4.0000000000000036) * (x - 2.9999999999999942) * (x - 1.0000000000000002) * (x - 2.0000000000000018))\n\njulia> map(x -> round(x, digits=10), q)\nFactoredPolynomial((x - 4.0) * (x - 2.0) * (x - 3.0) * (x - 1.0))","category":"page"},{"location":"#The-element-type","page":"Home","title":"The element type","text":"","category":"section"},{"location":"#Relationship-between-the-T-and-P{T,X}","page":"Home","title":"Relationship between the T and P{T,X}","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"The addition of a polynomial and a scalar, such as","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> using Polynomials\n\njulia> p = Polynomial([1,2,3], :x)\nPolynomial(1 + 2*x + 3*x^2)\n\njulia> p + 3\nPolynomial(4 + 2*x + 3*x^2)","category":"page"},{"location":"","page":"Home","title":"Home","text":"seems natural, but in Julia, as 3 is of type Int and p of type Polynomial{Int,:x} some addition must be defined. The basic idea is that 3 is promoted to the constant polynomial 3 with indeterminate :x as 3*one(p) and then addition of p + 3*one(p) is performed.","category":"page"},{"location":"","page":"Home","title":"Home","text":"This identification of a scalar with a constant polynomial can go both ways. If q is a constant polynomial of type Polynomial{Int, :y} then we should expect that p+q would be defined, as p plus the constant term of q. Indeed this is the case","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> q = Polynomial(3, :y)\nPolynomial(3)\n\njulia> p + q\nPolynomial(4 + 2*x + 3*x^2)","category":"page"},{"location":"","page":"Home","title":"Home","text":"If q is non-constant, such as variable(Polynomial, :y), then there would be an error due to the mismatched symbols. (The mathematical result would need a multivariate polynomial, not a univariate polynomial, as this package provides.)","category":"page"},{"location":"","page":"Home","title":"Home","text":"The same conversion is done for polynomial multiplication: constant polynomials are treated as numbers; non-constant polynomials must have their symbols match.","category":"page"},{"location":"","page":"Home","title":"Home","text":"There is an oddity – though the following two computations look the same, they are technically different:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> one(Polynomial, :x) + one(Polynomial, :y)\nPolynomial(2.0)\n\njulia> one(Polynomial, :y) + one(Polynomial, :x)\nPolynomial(2.0)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Both are constant polynomials over Int, but the first has the indeterminate :y, the second :x.","category":"page"},{"location":"","page":"Home","title":"Home","text":"This technical difference causes no issues with polynomial addition or multiplication, as there constant polynomials are treated as numbers, but can be an issue when constant polynomials are used as array elements.","category":"page"},{"location":"","page":"Home","title":"Home","text":"For arrays, the promotion of numbers to polynomials, allows natural constructions like:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p = Polynomial([1,2],:x)\nPolynomial(1 + 2*x)\n\njulia> q = Polynomial([1,2],:y) # non-constant polynomials with different indeterminates\nPolynomial(1 + 2*y)\n\njulia> [1 p]\n1×2 Matrix{Polynomial{Int64, :x}}:\n Polynomial(1) Polynomial(1 + 2*x)\n\njulia> [1 one(q)]\n1×2 Matrix{Polynomial{Int64, :y}}:\n Polynomial(1) Polynomial(1)","category":"page"},{"location":"","page":"Home","title":"Home","text":"However, as there would be an ambiguous outcome of the following","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> [one(p) one(q)]\nERROR: ArgumentError: Polynomials have different indeterminates\n[...]","category":"page"},{"location":"","page":"Home","title":"Home","text":"an error is thrown.","category":"page"},{"location":"","page":"Home","title":"Home","text":"In general, arrays with mixtures of non-constant polynomials with different indeterminates will error. By default, an error will occur when constant polynomials with different indeterminates are used as components. However, for typed arrays, conversion will allow such constructs to be used.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Using one(q) for a constant polynomial with indeterminate :y we have:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> P = typeof(p)\nPolynomial{Int64, :x} (alias for Polynomials.MutableDensePolynomial{Polynomials.StandardBasis, Int64, :x})\n\njulia> P[one(p) one(q)]\n1×2 Matrix{Polynomial{Int64, :x}}:\n Polynomial(1) Polynomial(1)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Of course, by not being explicit, there are sill gotchas. For example, we can construct this matrix without a specific types:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> [one(p), one(q)+one(p)]\n2-element Vector{Polynomial{Int64, :x}}:\n Polynomial(1)\n Polynomial(2)","category":"page"},{"location":"","page":"Home","title":"Home","text":"but not this one:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> [one(p), one(p) + one(q)]\nERROR: ArgumentError: Polynomials have different indeterminates\n[...]","category":"page"},{"location":"","page":"Home","title":"Home","text":"Also, mixing types can result in unspecific symbols, as this example shows:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> [1 p; p 1] + [1 2one(q); 3 4] # array{P{T,:x}} + array{P{T,:y}}\n2×2 Matrix{Polynomial{Int64}}:\n Polynomial(2) Polynomial(3 + 2*x)\n Polynomial(4 + 2*x) Polynomial(5)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Though were a non-constant polynomial with indeterminate y replacing 2one(q) above, that addition would throw an error.","category":"page"},{"location":"#Non-number-types-for-T","page":"Home","title":"Non-number types for T","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"The coefficients of the polynomial may be non-number types, such as matrices or other polynomials, albeit not every operation is fully supported.","category":"page"},{"location":"","page":"Home","title":"Home","text":"For example, a polynomial with matrix coefficients, might be constructed with:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> using Polynomials\n\njulia> a,b,c = [1 0;2 1], [1 0; 3 1], [1 0; 4 1]\n([1 0; 2 1], [1 0; 3 1], [1 0; 4 1])\n\njulia> p = Polynomial([a,b,c])\nPolynomial([1 0; 2 1] + [1 0; 3 1]*x + [1 0; 4 1]*x^2)\n\njulia> q = derivative(p)\nPolynomial([1 0; 3 1] + [2 0; 8 2]*x)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Various operations are available, derivative was shown above, here are the vector-space operations:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> 2p\nPolynomial([2 0; 4 2] + [2 0; 6 2]*x + [2 0; 8 2]*x^2)\n\njulia> p + q\nPolynomial([2 0; 5 2] + [3 0; 11 3]*x + [1 0; 4 1]*x^2)","category":"page"},{"location":"","page":"Home","title":"Home","text":"polynomial multiplication:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p * q\nPolynomial([1 0; 5 1] + [3 0; 18 3]*x + [3 0; 21 3]*x^2 + [2 0; 16 2]*x^3)","category":"page"},{"location":"","page":"Home","title":"Home","text":"polynomial evaluation, here either with a scalar or a matrix:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> p(2)\n2×2 Matrix{Int64}:\n 7 0\n 24 7\n\njulia> p(b)\n2×2 Matrix{Int64}:\n 3 0\n 18 3","category":"page"},{"location":"","page":"Home","title":"Home","text":"But if the type T lacks support of some generic functions, such as zero(T) and one(T), then there may be issues. For example, when T <: AbstractMatrix the output of p[degree(p)+1] is an error, as the implementation assumes zero(T) is defined. For static arrays, this isn't an issue, as there is support for zero(T). Other polynomial types, such as SparsePolynomial have less support, as some specialized methods assume more of the generic interface be implemented.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Similarly, using polynomials for T is a possibility:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> a,b,c = Polynomial([1],:y), Polynomial([0,1],:y), Polynomial([0,0,1],:y)\n(Polynomial(1), Polynomial(y), Polynomial(y^2))\n\njulia> p = Polynomial([a,b,c], :x)\nPolynomial(Polynomial(1) + Polynomial(y)*x + Polynomial(y^2)*x^2)\n\njulia> q = derivative(p)\nPolynomial(Polynomial(y) + Polynomial(2*y^2)*x)","category":"page"},{"location":"","page":"Home","title":"Home","text":"Again, much works:","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> 2p\nPolynomial(Polynomial(2) + Polynomial(2*y)*x + Polynomial(2*y^2)*x^2)\n\njulia> p + q\nPolynomial(Polynomial(1 + y) + Polynomial(y + 2*y^2)*x + Polynomial(y^2)*x^2)\n\njulia> p(2)\nPolynomial(1 + 2*y + 4*y^2)\n\njulia> p(b)\nPolynomial(1 + y^2 + y^4)","category":"page"},{"location":"","page":"Home","title":"Home","text":"But much doesn't. For example, implicit promotion can fail. For example, the scalar multiplication p * b will fail, as the methods assume this is the fallback polynomial multiplication and not the intended scalar multiplication.","category":"page"},{"location":"#Rational-functions","page":"Home","title":"Rational functions","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"The package provides support for rational functions – fractions of polynomials (for most types). The construction of the basic type mirrors the construction of rational numbers.","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> P = FactoredPolynomial\nFactoredPolynomial\n\njulia> p,q = fromroots(P, [1,2,3,4]), fromroots(P, [2,2,3,5])\n(FactoredPolynomial((x - 4) * (x - 2) * (x - 3) * (x - 1)), FactoredPolynomial((x - 5) * (x - 2)² * (x - 3)))\n\njulia> pq = p // q\n((x - 4) * (x - 2) * (x - 3) * (x - 1)) // ((x - 5) * (x - 2)² * (x - 3))\n\njulia> lowest_terms(pq)\n((x - 4.0) * (x - 1.0)) // ((x - 5.0) * (x - 2.0))\n\njulia> d,r = residues(pq); r\nDict{Float64, Vector{Float64}} with 2 entries:\n 5.0 => [1.33333]\n 2.0 => [0.666667]\n\njulia> x = variable(p);\n\njulia> for (λ, rs) ∈ r # reconstruct p/q from output of `residues`\n for (i,rᵢ) ∈ enumerate(rs)\n d += rᵢ//(x-λ)^i\n end\n end\n\n\njulia> d\n((x - 4.0) * (x - 1.0000000000000002)) // ((x - 5.0) * (x - 2.0))","category":"page"},{"location":"","page":"Home","title":"Home","text":"A basic plot recipe is provided.","category":"page"},{"location":"","page":"Home","title":"Home","text":"using Plots, Polynomials\nP = FactoredPolynomial\np,q = fromroots(P, [1,2,3]), fromroots(P, [2,3,3,0])\nplot(p//q)\nsavefig(\"rational_function.svg\"); nothing # hide","category":"page"},{"location":"","page":"Home","title":"Home","text":"(Image: )","category":"page"},{"location":"#Related-Packages","page":"Home","title":"Related Packages","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"StaticUnivariatePolynomials.jl Fixed-size univariate polynomials backed by a Tuple\nMultiPoly.jl for sparse multivariate polynomials\nDynamicPolynomals.jl Multivariate polynomials implementation of commutative and non-commutative variables\nMultivariatePolynomials.jl for multivariate polynomials and moments of commutative or non-commutative variables\nPolynomialRings.jl A library for arithmetic and algebra with multi-variable polynomials.\nAbstractAlgebra.jl, Nemo.jl for generic polynomial rings, matrix spaces, fraction fields, residue rings, power series, Hecke.jl for algebraic number theory.\nLaurentPolynomials.jl A package for Laurent polynomials.\nCommutativeAlgebra.jl the start of a computer algebra system specialized to discrete calculations with support for polynomials.\nPolynomialRoots.jl for a fast complex polynomial root finder. For larger degree problems, also FastPolynomialRoots and AMRVW.\nSpecialPolynomials.jl A package providing various polynomial types beyond the standard basis polynomials in Polynomials.jl. Includes interpolating polynomials, Bernstein polynomials, and classical orthogonal polynomials.\nClassicalOrthogonalPolynomials.jl A Julia package for classical orthogonal polynomials and expansions. Includes chebyshevt, chebyshevu, legendrep, jacobip, ultrasphericalc, hermiteh, and laguerrel. The same repository includes FastGaussQuadrature.jl, FastTransforms.jl, and the ApproxFun packages.","category":"page"},{"location":"#Contributing","page":"Home","title":"Contributing","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"If you are interested in this project, feel free to open an issue or pull request! In general, any changes must be thoroughly tested, allow deprecation, and not deviate too far from the common interface. All PR's must have an updated project version, as well, to keep the continuous delivery cycle up-to-date.","category":"page"},{"location":"polynomials/chebyshev/#Chebyshev-Polynomials","page":"Chebyshev","title":"Chebyshev Polynomials","text":"","category":"section"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"DocTestSetup = quote\n using Polynomials\nend","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"The Chebyshev polynomials are two sequences of polynomials, T_n and U_n. The Chebyshev polynomials of the first kind, T_n, can be defined by the recurrence relation:","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"T_0(x)=1 T_1(x)=x","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"T_n+1(x) = 2xT_n(x)-T_n-1(x)","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"The Chebyshev polynomioals of the second kind, U_n(x), can be defined by","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"U_0(x)=1 U_1(x)=2x","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"U_n+1(x) = 2xU_n(x) - U_n-1(x)","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"Both T_n and U_n have degree n, and any polynomial of degree n may be uniquely written as a linear combination of the polynomials T_0, T_1, ..., T_n (similarly with U_n).","category":"page"},{"location":"polynomials/chebyshev/#First-Kind","page":"Chebyshev","title":"First Kind","text":"","category":"section"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"ChebyshevT","category":"page"},{"location":"polynomials/chebyshev/#Polynomials.ChebyshevT","page":"Chebyshev","title":"Polynomials.ChebyshevT","text":"ChebyshevT{T, X}(coeffs::AbstractVector)\n\nChebyshev polynomial of the first kind.\n\nConstruct a polynomial from its coefficients coeffs, lowest order first, optionally in terms of the given variable var, which can be a character, symbol, or string.\n\nnote: Note\nChebyshevT is not axis-aware, and it treats coeffs simply as a list of coefficients with the first index always corresponding to the coefficient of T_0(x).\n\nExamples\n\njulia> using Polynomials\n\njulia> p = ChebyshevT([1, 0, 3, 4])\nChebyshevT(1⋅T_0(x) + 3⋅T_2(x) + 4⋅T_3(x))\n\njulia> ChebyshevT([1, 2, 3, 0], :s)\nChebyshevT(1⋅T_0(s) + 2⋅T_1(s) + 3⋅T_2(s))\n\njulia> one(ChebyshevT)\nChebyshevT(1.0⋅T_0(x))\n\njulia> p(0.5)\n-4.5\n\njulia> Polynomials.evalpoly(5.0, p, false) # bypasses the domain check done in p(5.0)\n2088.0\n\nThe latter shows how to evaluate a ChebyshevT polynomial outside of its domain, which is [-1,1]. (For newer versions of Julia, evalpoly is an exported function from Base with methods extended in this package, so the module qualification is unnecessary.\n\nnote: Note\nThe Chebyshev polynomials are also implemented in ApproxFun, ClassicalOrthogonalPolynomials.jl, FastTransforms.jl, and SpecialPolynomials.jl.\n\n\n\n\n\n","category":"type"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"The ChebyshevT type holds coefficients representing the polynomial a_0 T_0 + a_1 T_1 + + a_n T_n.","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"For example, the basis polynomial T_4 can be represented with ChebyshevT([0,0,0,0,1]).","category":"page"},{"location":"polynomials/chebyshev/#Conversion","page":"Chebyshev","title":"Conversion","text":"","category":"section"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"ChebyshevT can be converted to Polynomial and vice-versa.","category":"page"},{"location":"polynomials/chebyshev/","page":"Chebyshev","title":"Chebyshev","text":"julia> c = ChebyshevT([1, 0, 3, 4])\nChebyshevT(1⋅T_0(x) + 3⋅T_2(x) + 4⋅T_3(x))\n\n\njulia> p = convert(Polynomial, c)\nPolynomial(-2.0 - 12.0*x + 6.0*x^2 + 16.0*x^3)\n\njulia> convert(ChebyshevT, p)\nChebyshevT(1.0⋅T_0(x) + 3.0⋅T_2(x) + 4.0⋅T_3(x))","category":"page"},{"location":"extensions/#Extensions","page":"Extensions","title":"Extensions","text":"","category":"section"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"As of v1.9 of Julia, packages can provide extension code which is loaded when external packages are loaded.","category":"page"},{"location":"extensions/#Makie","page":"Extensions","title":"Makie","text":"","category":"section"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"When Makie is loaded, a plot recipe is provided.","category":"page"},{"location":"extensions/#ChainRulesCore","page":"Extensions","title":"ChainRulesCore","text":"","category":"section"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"When ChainRulesCore is loaded, a frule and rrule is defined for to integrate with different autodifferentiation packages.","category":"page"},{"location":"extensions/#MutableArithmetics","page":"Extensions","title":"MutableArithmetics","text":"","category":"section"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"When the MutableArithmetics package is loaded, an extension provides its functionality for a few polynomial types, described in the following. Prior to v1.9 the external package PolynomialsMutableArithmetics provided the same functionality.","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"While polynomials of type Polynomial are mutable objects, operations such as +, -, *, always create new polynomials without modifying its arguments. The time needed for these allocations and copies of the polynomial coefficients may be noticeable in some use cases. This is amplified when the coefficients are for instance BigInt or BigFloat which are mutable themselves. This can be avoided by modifying existing polynomials to contain the result of the operation using the MutableArithmetics (MA) API.","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"Consider for instance the following arrays of polynomials","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"using Polynomials\nd, m, n = 30, 20, 20\np(d) = Polynomial(big.(1:d))\nA = [p(d) for i in 1:m, j in 1:n]\nb = [p(d) for i in 1:n]","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"In this case, the arrays are mutable objects for which the elements are mutable polynomials which have mutable coefficients (BigInts). These three nested levels of mutable objects communicate with the MA API in order to reduce allocation. Calling A * b requires approximately 40 MiB due to 2 M allocations as it does not exploit any mutability.","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"using MutableArithmetics # or `using PolynomialsMutableArithmetics` to register `Polynomials` with `MutableArithmetics`\n\nconst MA = MutableArithmetics\nMA.operate(*, A, b)","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"exploits the mutability and hence only allocates approximately 70 KiB due to 4 k allocations.","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"If the resulting vector is already allocated, e.g.,","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"z(d) = Polynomial([zero(BigInt) for i in 1:d])\nc = [z(2d - 1) for i in 1:m]","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"then we can exploit its mutability with","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"MA.operate!(MA.add_mul, c, A, b)","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"to reduce the allocation down to 48 bytes due to 3 allocations.","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"These remaining allocations are due to the BigInt buffer used to store the result of intermediate multiplications. This buffer can be preallocated with:","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"buffer = MA.buffer_for(MA.add_mul, typeof(c), typeof(A), typeof(b))\nMA.buffered_operate!(buffer, MA.add_mul, c, A, b)","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"then the second line is allocation-free.","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"The MA.@rewrite macro rewrite an expression into an equivalent code that exploit the mutability of the intermediate results. For instance","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"MA.@rewrite(A1 * b1 + A2 * b2)","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"is rewritten into","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"c = MA.operate!(MA.add_mul, MA.Zero(), A1, b1)\nMA.operate!(MA.add_mul, c, A2, b2)","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"which is equivalent to","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"c = MA.operate(*, A1, b1)\nMA.mutable_operate!(MA.add_mul, c, A2, b2)","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"note: Note\nNote that currently, only the Polynomial and Polynomials.PnPolynomial types implement the API and only","category":"page"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"part of it is implemented","category":"page"},{"location":"extensions/#PolyCompat","page":"Extensions","title":"PolyCompat","text":"","category":"section"},{"location":"extensions/","page":"Extensions","title":"Extensions","text":"While not an extension, the older Poly type that this package used prior to v0.7 is implemented as an alternate basis and provided on an opt-in bases by executing using Polynomials.PolyCompat. This is to provide support for older code bases.","category":"page"}] +} diff --git a/v4.0.0/siteinfo.js b/v4.0.0/siteinfo.js new file mode 100644 index 00000000..efe9ad68 --- /dev/null +++ b/v4.0.0/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "v4.0.0"; diff --git a/versions.js b/versions.js index e1c2ced6..c58793a6 100644 --- a/versions.js +++ b/versions.js @@ -1,5 +1,6 @@ var DOC_VERSIONS = [ "stable", + "v4.0", "v3.2", "v3.1", "v3.0", @@ -13,5 +14,5 @@ var DOC_VERSIONS = [ "v0.1", "dev", ]; -var DOCUMENTER_NEWEST = "v3.2.13"; +var DOCUMENTER_NEWEST = "v4.0.0"; var DOCUMENTER_STABLE = "stable";